請問如何在 Timage 或可以畫圖的元件上 反白一段區域???? |
尚未結案
|
eric888
一般會員 發表:9 回覆:3 積分:2 註冊:2004-09-29 發送簡訊給我 |
|
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
eric888 您好: 我寫了一段範例,處理對象是 Image1,繪製觸發時機是在 Image1 上面按下滑鼠左鍵,繪製區域隨滑鼠的移動(持續按住滑鼠左鍵)而變更,放開滑鼠左鍵時結束繪製,您看看適不適用?
TPoint BeginPos; // 按下滑鼠左鍵後的起始座標 TPoint EndPos; // 移動滑鼠時的座標 bool DragFlag=false; // 是否按下滑鼠鍵拖曳的檢查旗號 void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(Button == mbLeft){ // 按左鍵才處理 DragFlag = true; // 設定檢查旗號 // 設畫筆為 xor 模式 Image1->Picture->Bitmap->Canvas->Pen->Mode = pmXor; // 記錄座標資訊 BeginPos.x = X; BeginPos.y = Y; EndPos.x = X; EndPos.y = Y; // 繪製第一個區塊 (因為座標相同,似乎可省略本步驟) Image1->Picture->Bitmap->Canvas->Rectangle(BeginPos.x, BeginPos.y, EndPos.x, EndPos.y); // 設游標樣式為十字形 Screen->Cursor = crCross; } } //---------------------------------------------------- void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(DragFlag){ // 清除 (還原) 前一次繪製的區域 Image1->Picture->Bitmap->Canvas->Rectangle(BeginPos.x, BeginPos.y, EndPos.x, EndPos.y); // 記錄變更後的座標位置 EndPos.x = X; EndPos.y = Y; // 繪製新的標註區域 Image1->Picture->Bitmap->Canvas->Rectangle(BeginPos.x, BeginPos.y, EndPos.x, EndPos.y); } } //---------------------------------------------------- void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(DragFlag){ DragFlag=false; // 清除檢查旗號 Screen->Cursor = crDefault; // 恢復游標形狀 } } //---------------------------------------------------- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |