Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2351667
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:06:24

TBitBtn 的实现是内部有个 Glyph 储存一个图片,用储存的图片进行作图
如果给 Glyph 赋值,TBitBtn->Glyph = pGlobeBitmap,
是把 pGlobeBitmap 复制到 Glyph 里,然后用 TBitBtn 里面储存的 Glyph 副本画图,而不是设置的关联,不是用关联作图。
所以要改变 Glyph 的内容,必须重新赋值。

另外的方法:
既然 Glyph 是储存位图的一个副本,那个这个位图也是直接可画的,不需要外界的位图,也就是不需要那个 pGlobeBitmap.


__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
  TRect r(0,0,16,16); //为按钮的 Glyph 设置属性,并且在 Glyph 里面作默认图形
  BitBtn1->Glyph->Width = 16;
  BitBtn1->Glyph->Height = 16;
  BitBtn1->Glyph->PixelFormat = pf32bit;
  BitBtn1->Glyph->Canvas->Brush->Color = clRed;
  BitBtn1->Glyph->Canvas->Brush->Style = bsSolid;
  BitBtn1->Glyph->Canvas->Pen->Color = ~clRed;
  BitBtn1->Glyph->Canvas->Rectangle(r);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
  if(ColorDialog1->Execute()) //选择了新的颜色,需要重新为 Glyph 作图
   {
     TRect r(0,0,16,16);
     BitBtn1->Glyph->Canvas->Brush->Color = ColorDialog1->Color;
     BitBtn1->Glyph->Canvas->Brush->Style = bsSolid;
     BitBtn1->Glyph->Canvas->Pen->Color = ~ColorDialog1->Color;
     BitBtn1->Glyph->Canvas->Rectangle(r);
   }
}
//---------------------------------------------------------------------------

--------------------next---------------------

阅读(1027) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~