如何用代碼把Image控制項的黑色背景轉為白色? |
答題得分者是:RedSnow
|
jean2004
初階會員 發表:69 回覆:80 積分:39 註冊:2004-12-18 發送簡訊給我 |
|
Stallion
版主 發表:52 回覆:1600 積分:1995 註冊:2004-09-15 發送簡訊給我 |
/--------------------------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include------------------- 學,然後知不足。 |
RedSnow
版主 發表:79 回覆:1322 積分:845 註冊:2003-12-15 發送簡訊給我 |
jean2004 您好: 以下是我的作法,測試時先設一個 Image 物件命名為 Image1,並載入一張圖片,然後設一個 Button 物件,設定 OnClick 事件如下:
void __fastcall TForm1::Button1Click(TObject *Sender) { Graphics::TBitmap *tmpBitmap = new Graphics::TBitmap(); tmpBitmap->Assign(Image1->Picture->Bitmap); // 將 Image1 內容設給暫存用的 Bitmap tmpBitmap->Transparent = true; // 假設左上角的點是背景色,如果不是的話請自行調整 Pixels[x][y] 的座標值 tmpBitmap->TransparentColor = tmpBitmap->Canvas->Pixels[0][0]; Image1->Picture->Bitmap = NULL; // 清除 Image1 內容 Image1->Picture->Bitmap->Width = Image1->Width; Image1->Picture->Bitmap->Height = Image1->Height; Image1->Picture->Bitmap->Canvas->Brush->Style = bsSolid; if (tmpBitmap->TransparentColor & 0xFFFFFF == clWhite) { // 如果背景為白色的 Image1->Picture->Bitmap->Canvas->Brush->Color = clBlack; // 將新的背景色設為黑色 } else { // 如果背景不是白色的 Image1->Picture->Bitmap->Canvas->Brush->Color = clWhite; // 將新的背景色設為白色 } // 將整個 Image1 填為新的背景色 Image1->Picture->Bitmap->Canvas->FillRect(Rect(0, 0, Image1->Width, Image1->Height)); // 將圖形內容以透明方式重新繪製到 Image1 Image1->Picture->Bitmap->Canvas->Draw(0,0,tmpBitmap); delete tmpBitmap; }上述程序會在連續點擊 Button1 時,Image1 的背景色在黑色與白色之間輪流切換,參考看看吧。 7 天天敲鍵盤 v 時時按滑鼠 8 |
jean2004
初階會員 發表:69 回覆:80 積分:39 註冊:2004-12-18 發送簡訊給我 |
|
jean2004
初階會員 發表:69 回覆:80 積分:39 註冊:2004-12-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |