一个BCB中关于画布Canvas方面的问题

lxqlyld 2013-12-26 04:08:55
我用这个代码显示“新春快乐,万事如意”:
Canvas->Font->Size=20;
Canvas->Font->Name="隶书";
Canvas->Font->Color=clRed;
Canvas->Brush->Color=clGreen;
Canvas->TextOut(20,30,"新春快乐,万事如意");

如果让这行文字消失,代码要怎么写啊
...全文
501 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxqlyld 2013-12-26
  • 打赏
  • 举报
回复
引用 6 楼 sololie 的回复:
这两行可以去掉,如果你不考虑保留背景色的话 //TRect r = Rect(20,30,20+Canvas->TextWidth(txt), 30+Canvas->TextHeight(txt)); //Canvas->FillRect(r); 直接这样就可以了 Canvas->TextOut(20,30,txt);
非常感谢,解决了
sololie 2013-12-26
  • 打赏
  • 举报
回复
这两行可以去掉,如果你不考虑保留背景色的话 //TRect r = Rect(20,30,20+Canvas->TextWidth(txt), 30+Canvas->TextHeight(txt)); //Canvas->FillRect(r); 直接这样就可以了 Canvas->TextOut(20,30,txt);
sololie 2013-12-26
  • 打赏
  • 举报
回复
用一个全局变量 String txt;
sololie 2013-12-26
  • 打赏
  • 举报
回复

void __fastcall TForm1::FormPaint(TObject *Sender)
{
    Canvas->Font->Size=20;
    Canvas->Font->Name="隶书";
    Canvas->Font->Color=clRed;
    Canvas->Brush->Color=clGreen;
    TRect r = Rect(20,30,20+Canvas->TextWidth(txt), 30+Canvas->TextHeight(txt));
    Canvas->FillRect(r);
    Canvas->TextOut(r.left,r.top,txt);
}
// 显示另一句话
void __fastcall TForm1::btn1Click(TObject *Sender)
{
    txt = "新春快乐,万事如意";
    Repaint();
}

// 擦掉
void __fastcall TForm1::btn2Click(TObject *Sender)
{
    txt = "";
    Repaint();
}
// 显示另一句话
void __fastcall TForm1::btn3Click(TObject *Sender)
{
    txt = "元旦快乐,万事胜意";
    Repaint();
}
lxqlyld 2013-12-26
  • 打赏
  • 举报
回复
引用 2 楼 sololie 的回复:
你这些代码是写在 OnPaint 里的么
是的
sololie 2013-12-26
  • 打赏
  • 举报
回复
你这些代码是写在 OnPaint 里的么
sololie 2013-12-26
  • 打赏
  • 举报
回复
你这些代码是卸载 OnPaint 里的么

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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