将一幅bmp图片,从文件中加载到窗口的TCanvas上去,代码如下:
::Graphics::TBitmap *bmp= new ::Graphics::TBitmap;
bmp->Transparent = true;//是否透明
bmp->LoadFromFile("right1.bmp");
Canvas->Draw(0,0,bmp);
delete bmp;
在TCanvas上画背景透明的文字,代码如下:
Image1->Canvas->Font->Color = clRed; //文字颜色
Image1->Canvas->Brush->Style = bsClear;//文字区域透明
Image1->Canvas->TextOutA(20,0,"大家好");
在TCanvas上画矩形,矩形区域透明
Image1->Canvas->Brush->Style = bsClear;
Image1->Canvas->Rectangle(51,0,78,28);
在TCanvas上画图后,想擦除刚画的图形,代码如下:
Image1->Canvas->Pen->Mode = pmNotXor ;
Image1->Canvas->Pen->Color = clBlue;
Image1->Canvas->Pen->Style = psSolid;
Image1->Canvas->Pen->Width = 1;
将上述代码执行第二次时,擦除第一次所画图形。
在内存中画图,复制到其他的TCanvas上
void __fastcall TForm1::Button1Click(TObject *Sender)
{
::Graphics::TBitmap *bmp = new ::Graphics::TBitmap;
bmp->Width = 100;
bmp->Height= 100;
bmp->Canvas->Pen->Color = clRed;
bmp->Canvas->Ellipse(0,0,100,100);
TRect a(0,0,200,200);
TRect b(0,0,200,200);
//复制位图bmp到窗口画布上,clBlack是透明色,即位图中将要被透过的颜色,与位图背景色相同
Canvas->BrushCopy(a, bmp, b, clBlack);
//Image1->Picture->Bitmap->Assign(bmp);//后面屏蔽的这几句功能相似。
//Image1->Picture->Bitmap=bmp;
Canvas->CopyMode = SRCCOPY;//复制时实现一些运算,SRCCOPY是直接复制,无运算
Canvas->CopyRect(a,bmp->Canvas,b);
//API函是实现复制位图
//BitBlt(this->Canvas->Handle,0,0,100,100,bmp->Canvas->Handle,0,0,SRCCOPY);
}
如果是资源中的图片,如何将其显示到TImage控件呢?有两种方法:
TImage * m_pImg = new TImage(m_pParent);
m_pImg->Parent = m_pParent;
m_pImg->Width = 32;
m_pImg->Height = 15;
m_pImg->Left = 118;
m_pImg->Top = 68;
m_pImg->Transparent = true;//透明显示
::Graphics::TBitmap * pArrow_bmp = new ::Graphics::TBitmap;
pArrow_bmp->Width =32;
pArrow_bmp->Height =15;
pArrow_bmp->Handle = GetArrowFromRes(0);//获取资源中的位图句标,这里是自定函数,也可用库函数
m_pImg->Canvas->Draw(0,0,pArrow_bmp);//画位图到TImage控件上
//可用如下库函数
//m_pImg->Canvas->BrushCopy(TRect(0,0,32,15),
//pArrow_bmp,
//TRect(0,0,32,15),clWhite);
delete pArrow_bmp;
另一种方法,如下:
m_pImg->Picture->Bitmap->Handle = GetArrowFromRes(0);