Canvas 的一个问题

SENDFREE 2001-04-14 04:13:00

我的 Canvas 有的时候不能用,怎么回事?
code 如下:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
TForm2 * pf=new TForm2(this); //在此之前已经制作了 Form2

pf->Color=clWhite; // 这行有效果,下面的语句不起作用

pf->Canvas->FillRect(ClientRect);
pf->Canvas->Pen->Color=clRed;
pf->Canvas->Pen->Width=3;
pf->Canvas->MoveTo(10,10);
pf->Canvas->LineTo(200,200);

this->Canvas->MoveTo(1,1); //在没有上面的语句的时候,还好好的
this->Canvas->LineTo(100,100); // 有了之后, Form1 也画不出东西
pf->ShowModal();

delete pf;

}
...全文
76 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
SENDFREE 2001-04-15
  • 打赏
  • 举报
回复
哎呀,原来如此,谢谢了
rh 2001-04-14
  • 打赏
  • 举报
回复
给分了……虽然没有我的份~_~
「已注销」 2001-04-14
  • 打赏
  • 举报
回复
同意楼上
Winsky 2001-04-14
  • 打赏
  • 举报
回复
在执行 pf->ShowModal(); 时 pf会用Paint方法重画窗口内容,所以应该将
pf->Canvas->FillRect(ClientRect);
pf->Canvas->Pen->Color=clRed;
pf->Canvas->Pen->Width=3;
pf->Canvas->MoveTo(10,10);
pf->Canvas->LineTo(200,200);
这一段写在Form2的OnPaint事件处理函数中,至少也要放在pf->ShowModal();之后.
如果Form2的窗体压在Form1上,
this->Canvas->MoveTo(1,1); //在没有上面的语句的时候,还好好的
this->Canvas->LineTo(100,100); // 有了之后, Form1 也画不出东西
这两句肯定也会不起作用,因为窗口重画(RePaint)时,不会调用到这两句.

好的绘图方法是将你的图象显示部分的代码都放在相应窗体的OnPaint事件处理方法中.


yhec 2001-04-14
  • 打赏
  • 举报
回复
可能是画了,但被pf窗口显示时冲掉了,这种画出的图一被挡住就没了;
画图功能要放在Form的OnPaint事件中画才行,否则,一碰就没;

13,825

社区成员

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

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