全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1253
推到 Plurk!
推到 Facebook!

如何用代碼把Image控制項的黑色背景轉為白色?

答題得分者是:RedSnow
jean2004
初階會員


發表:69
回覆:80
積分:39
註冊:2004-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-21 17:55:39 IP:222.135.xxx.xxx 未訂閱
各位大蝦,如何用代碼把Image控制項的黑色背景轉為白色?
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-21 19:56:44 IP:211.22.xxx.xxx 未訂閱
/---------------------------------------------------------------------------    #ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include 
#include 
#include 
#include <Forms.hpp>
#include 
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:        // IDE-managed Components
        TImage *Image1;
        void __fastcall FormActivate(TObject *Sender);
private:        // User declarations
public:                // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif    //---------------------------------------------------------------------------    #include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{    }
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
Image1->Canvas->Brush->Color = clBlack;
Image1->Canvas->Brush->Style = bsSolid;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
ShowMessage("Black Background Color");
Image1->Canvas->Brush->Color = clWhite;
Image1->Canvas->Brush->Style = bsSolid;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
ShowMessage("White Background Color");
}
//---------------------------------------------------------------------------
------------------- 學,然後知不足。
RedSnow
版主


發表:79
回覆:1322
積分:845
註冊:2003-12-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-22 02:19:43 IP:59.115.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-22 07:42:48 IP:222.135.xxx.xxx 未訂閱
不錯不錯,這個正是我要的
jean2004
初階會員


發表:69
回覆:80
積分:39
註冊:2004-12-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-22 07:49:31 IP:222.135.xxx.xxx 未訂閱
請兩位大蝦看看我的這個問題吧,謝謝兩位了: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=75311
系統時間:2024-04-28 4:04:06
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!