Label上画图

xcluii 2010-06-17 05:25:08
因为需要必须在Label上画图,当鼠标移至或者离开Lable上后需要对其显示的文字加圈,我用如下方法却只能画一次便马上消失了。
TControlCanvas *cv = new TControlCanvas;
cv->Control = lblCalender;
cv->Pen->Color = clBlue;
cv->Ellipse(lblCalender->Width / 4, lblCalender->Height / 4, lblCalender->Left * 3 / 4, lblCalender->Height * 3 / 4);

请各位高手帮忙解决这个问题。
...全文
144 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xcluii 2010-09-21
  • 打赏
  • 举报
回复
自己解决了,重写Lable的Paint方法
hind24 2010-06-18
  • 打赏
  • 举报
回复
重叠放个TImage……
xcluii 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 songhtao 的回复:]

在label的OnPainet试下
[/Quote]
Label是无OnPaint的
我不懂电脑 2010-06-18
  • 打赏
  • 举报
回复
在label的OnPainet试下
xcluii 2010-06-18
  • 打赏
  • 举报
回复
to ccrun:在form中的OnPaint也是同样的问题。
另外,请问如何捕获WM_PAINT消息,我的Lable数组是动态生成的。现在每一个lable需要显示几种不同的颜色,颜色种数与类型都需要作为参数传递才行啊。
ccrun.com 2010-06-17
  • 打赏
  • 举报
回复
这样是不行地. 窗体刷新一下就没效果了. 应该在Form的OnPaint事件或截获Label的WM_PAINT消息进行绘制.
YeBinYe 2010-06-17
  • 打赏
  • 举报
回复

//---------------------------------------------------------------------------
void __fastcall TForm1::Label1MouseEnter(TObject *Sender)
{
Label1->Canvas->Ellipse(Label1->Width/4,
Label1->Height/4,
Label1->Left*3/4,
Label1->Height*3/4);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label1MouseLeave(TObject *Sender)
{
Label1->Repaint();
}
//---------------------------------------------------------------------------

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧