載點
https://docs.google.com/uc?id=0B4PwTcFHZPWbZGUwYTJkMmQtNjkxZi00YTMwLWJhMTEtNDE4N2U5ZThhYjNm&export=download&hl=zh_TW
外觀
關鍵程式碼:
void __fastcall TForm1::RGBToYUY2(Graphics::TBitmap *FrBmp,BYTE *dst)
{
unsigned char *p,*src;
int len,w,h,x,y;
w=FrBmp->Width;
h=FrBmp->Height;
for(y=0;y<h;y++)
{
src=(unsigned char*)FrBmp->ScanLine[y];
for(x=0;x<w;x+=2,src+=6,dst+=4)
{
...
...
}
}
}
//---------------------------------------------------------------------------
HRESULT __fastcall TForm1::YUY2ToBMP(BYTE *yuy2,Graphics::TBitmap *dstbmp)
{
int x,y;
unsigned char *ty,*tu,*tv;
ty=(unsigned char*)malloc(dstbmp->Width*dstbmp->Height);
tu=(unsigned char*)malloc(dstbmp->Width*dstbmp->Height);
tv=(unsigned char*)malloc(dstbmp->Width*dstbmp->Height);
BYTE *pt,*py,*pu,*pv;
pt=yuy2;
py=ty;
pu=tu;
pv=tv;
for(int y=0;y<dstbmp->Height;y++)
{
for(int x=0;x<dstbmp->Width;x+=2)
{
....
....
}
}
py=ty;
pu=tu;
pv=tv;
for(y=0;y<dstbmp->Height;y++)
{
char *linep=(char*)dstbmp->ScanLine[y];
for(x=0;x<dstbmp->Width;x++)
{
unsigned int y=(*py++);
int u=(int)(*pu++)-128;
int v=(int)(*pv++)-128;
float R,G,B;
R = (float)y + 1.6*(float)u;
G = (float)y - 0.9*(float)v - 0.5*(float)u;
B = (float)y + 1.5*(float)v;
if(R<0) R=0;
if(R>255) R=255;
if(G<0) G=0;
if(G>255) G=255;
if(B<0) B=0;
if(B>255) B=255;
*linep++=R;
*linep++=G;
*linep++=B;
}
}
free(ty);
free(tu);
free(tv);
return S_OK;
}
//---------------------------------------------------------------------------
RGB與YUY2轉換,不過轉換後圖檔看起來有些微差異...
使用Borland C++ Builder 寫的小程式
2010年12月16日 星期四
測試程式執行次數
載點
https://docs.google.com/uc?id=0B4PwTcFHZPWbNTEwMTdhOWMtMDRjOS00M2RmLWFlNWQtMGQ5ZTUxMzg2MTcx&export=download&hl=zh_TW
外觀
關鍵程式碼:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si,sizeof(si));
si.cb=sizeof(si);
ZeroMemory(&pi,sizeof(pi));
CreateProcess(exepath.c_str(),NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
n++;
Label1->Caption=n;
if(n==Edit3->Text.ToInt())
{
Timer1->Enabled=false;
Label1->Font->Color=clRed;
Label1->Caption="Test Over";
}
}
//---------------------------------------------------------------------------
使用Timer 讓要測試的執行檔能在選擇的秒數後啟動
https://docs.google.com/uc?id=0B4PwTcFHZPWbNTEwMTdhOWMtMDRjOS00M2RmLWFlNWQtMGQ5ZTUxMzg2MTcx&export=download&hl=zh_TW
外觀
關鍵程式碼:
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si,sizeof(si));
si.cb=sizeof(si);
ZeroMemory(&pi,sizeof(pi));
CreateProcess(exepath.c_str(),NULL,NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);
n++;
Label1->Caption=n;
if(n==Edit3->Text.ToInt())
{
Timer1->Enabled=false;
Label1->Font->Color=clRed;
Label1->Caption="Test Over";
}
}
//---------------------------------------------------------------------------
使用Timer 讓要測試的執行檔能在選擇的秒數後啟動
Link List 練習
載點
https://docs.google.com/uc?id=0B4PwTcFHZPWbNDY0NzNhZjgtNmVhNS00YzQ0LWFhZGUtYjRhZTk5MTE0YTll&export=download&hl=zh_TW
外觀
關鍵程式碼:
struct Node
{
int data;
Node *next;
};
Node *head,*tail;
Node *newptr;
newptr->data=StrToInt(InputBox("輸入資料",str,""));
newptr->next=NULL;
if(head==NULL)
head=newptr;
else
tail->next=newptr;
tail=newptr;
輸入資料後使用next 做連結
https://docs.google.com/uc?id=0B4PwTcFHZPWbNDY0NzNhZjgtNmVhNS00YzQ0LWFhZGUtYjRhZTk5MTE0YTll&export=download&hl=zh_TW
外觀
關鍵程式碼:
struct Node
{
int data;
Node *next;
};
Node *head,*tail;
Node *newptr;
newptr->data=StrToInt(InputBox("輸入資料",str,""));
newptr->next=NULL;
if(head==NULL)
head=newptr;
else
tail->next=newptr;
tail=newptr;
輸入資料後使用next 做連結
瀏覽圖片BCB
載點:
https://docs.google.com/uc?id=0B4PwTcFHZPWbYjUzNDQxNjYtYTk2Yi00ZTY4LTg1MTUtMWU1ZjQyZWY0MmM4&export=download&hl=zh_TW
外觀:
關鍵程式碼:
void __fastcall TForm1::FilterComboBox1Change(TObject *Sender)
{
FileListBox1->Mask=FilterComboBox1->Mask;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DriveComboBox1Change(TObject *Sender)
{
DirectoryListBox1->Drive=DriveComboBox1->Drive;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DirectoryListBox1Change(TObject *Sender)
{
FileListBox1->Directory=DirectoryListBox1->Directory;
Edit1->Text=DirectoryListBox1->Directory;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FileListBox1Change(TObject *Sender)
{
String file_name;
file_name=FileListBox1->FileName;
Edit1->Text=file_name;
if(file_name!="")
Image1->Picture->LoadFromFile(file_name);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key==13)
{
if(FileExists(Edit1->Text))
Image1->Picture->LoadFromFile(Edit1->Text);
}
}
//---------------------------------------------------------------------------
顯示檔案,與讀圖
https://docs.google.com/uc?id=0B4PwTcFHZPWbYjUzNDQxNjYtYTk2Yi00ZTY4LTg1MTUtMWU1ZjQyZWY0MmM4&export=download&hl=zh_TW
外觀:
關鍵程式碼:
void __fastcall TForm1::FilterComboBox1Change(TObject *Sender)
{
FileListBox1->Mask=FilterComboBox1->Mask;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DriveComboBox1Change(TObject *Sender)
{
DirectoryListBox1->Drive=DriveComboBox1->Drive;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DirectoryListBox1Change(TObject *Sender)
{
FileListBox1->Directory=DirectoryListBox1->Directory;
Edit1->Text=DirectoryListBox1->Directory;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FileListBox1Change(TObject *Sender)
{
String file_name;
file_name=FileListBox1->FileName;
Edit1->Text=file_name;
if(file_name!="")
Image1->Picture->LoadFromFile(file_name);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key==13)
{
if(FileExists(Edit1->Text))
Image1->Picture->LoadFromFile(Edit1->Text);
}
}
//---------------------------------------------------------------------------
顯示檔案,與讀圖
2010年12月15日 星期三
猜數字
載點:
https://docs.google.com/uc?id=0B4PwTcFHZPWbMTEyYzgwMTItZjM4Ny00OGRmLWI2MWEtMDk1NGFkNmI0N2Ji&export=download&hl=zh_TW
圖式:
關鍵程式碼:
for(int i=0;i<4;i++)
{
ans_num[i]=-1;
do
{
a=rand()%10;
tmp=ans_num[i];
ans_num[i]=randnum[a];
randnum[a]=tmp;
}while(ans_num[i]<0);
Label1->Caption=Label1->Caption+IntToStr(ans_num[i]);
}
建出四個不同的數字
https://docs.google.com/uc?id=0B4PwTcFHZPWbMTEyYzgwMTItZjM4Ny00OGRmLWI2MWEtMDk1NGFkNmI0N2Ji&export=download&hl=zh_TW
圖式:
關鍵程式碼:
for(int i=0;i<4;i++)
{
ans_num[i]=-1;
do
{
a=rand()%10;
tmp=ans_num[i];
ans_num[i]=randnum[a];
randnum[a]=tmp;
}while(ans_num[i]<0);
Label1->Caption=Label1->Caption+IntToStr(ans_num[i]);
}
建出四個不同的數字
電話簿程式!
載點:
https://docs.google.com/uc?id=0B4PwTcFHZPWbMDYwOGMzYTctZjdhYi00NDY4LWE2NGEtMGZhNjAyZmY3Zjgw&export=download&hl=zh_TW
程式畫面:
關鍵程序碼:
if(FileExists(sIniFile))
{
lRet = GetPrivateProfileString("People", "number", "0", sItemCount, sizeof(sItemCount), sIniFile);
peoplecount=StrToInt(sItemCount);
for(int i=0;i<peoplecount;i++)
{
lRet = GetPrivateProfileString("Name", IntToStr(i+1).c_str(), "0", sItemCount, sizeof(sItemCount), sIniFile);
name[i]=sItemCount;
lRet = GetPrivateProfileString("Phone", IntToStr(i+1).c_str(), "0", sItemCount, sizeof(sItemCount), sIniFile);
number[i]=sItemCount;
}
tot=peoplecount;
}
if(FileExists(sIniFile))
{
WritePrivateProfileString("People","number",IntToStr(tot).c_str(), sIniFile);
for(int i=0;i<tot;i++)
{
WritePrivateProfileString ("Name",IntToStr(i+1).c_str(),name[i].c_str(), sIniFile);
WritePrivateProfileString ("Phone",IntToStr(i+1).c_str(),number[i].c_str(), sIniFile);
}
}
說明:
使用GetPrivateProfileString與WritePrivateProfileString 兩個functions,讀取與寫入.ini 檔!
https://docs.google.com/uc?id=0B4PwTcFHZPWbMDYwOGMzYTctZjdhYi00NDY4LWE2NGEtMGZhNjAyZmY3Zjgw&export=download&hl=zh_TW
程式畫面:
關鍵程序碼:
if(FileExists(sIniFile))
{
lRet = GetPrivateProfileString("People", "number", "0", sItemCount, sizeof(sItemCount), sIniFile);
peoplecount=StrToInt(sItemCount);
for(int i=0;i<peoplecount;i++)
{
lRet = GetPrivateProfileString("Name", IntToStr(i+1).c_str(), "0", sItemCount, sizeof(sItemCount), sIniFile);
name[i]=sItemCount;
lRet = GetPrivateProfileString("Phone", IntToStr(i+1).c_str(), "0", sItemCount, sizeof(sItemCount), sIniFile);
number[i]=sItemCount;
}
tot=peoplecount;
}
if(FileExists(sIniFile))
{
WritePrivateProfileString("People","number",IntToStr(tot).c_str(), sIniFile);
for(int i=0;i<tot;i++)
{
WritePrivateProfileString ("Name",IntToStr(i+1).c_str(),name[i].c_str(), sIniFile);
WritePrivateProfileString ("Phone",IntToStr(i+1).c_str(),number[i].c_str(), sIniFile);
}
}
說明:
使用GetPrivateProfileString與WritePrivateProfileString 兩個functions,讀取與寫入.ini 檔!
2010年12月14日 星期二
Paint Box
下載連結:
https://docs.google.com/uc?id=0B4PwTcFHZPWbMjQxMTAzZjItMzBkNy00ZmQ4LWIwNjQtOGQxMDE2Yzc3NDU2&export=download&hl=zh_TW
程式畫面:
關鍵程式碼:
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(draw==1)
Image1->Canvas->LineTo(X,Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
draw=1;
Image1->Canvas->MoveTo(X,Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
draw=0;
}
//---------------------------------------------------------------------------
https://docs.google.com/uc?id=0B4PwTcFHZPWbMjQxMTAzZjItMzBkNy00ZmQ4LWIwNjQtOGQxMDE2Yzc3NDU2&export=download&hl=zh_TW
程式畫面:
關鍵程式碼:
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(draw==1)
Image1->Canvas->LineTo(X,Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
draw=1;
Image1->Canvas->MoveTo(X,Y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
draw=0;
}
//---------------------------------------------------------------------------
訂閱:
意見 (Atom)