今天和同事遇上一个图形问题,要做一个流程图之类的东西,本来打算用GDI,因为界面上用panel分成了几部分(就是form完全被panel覆盖了),所以先声明一个canvas实例,然后用panel的句柄绑定到这个canvas实例上,然后画箭头。
箭头是画出来了,但是重画窗体的时候,箭头就消失了,就算把画图的语句写在onpaint时间里也没用,后来又覆盖了WM_PAINT消息处理方法,情况就成这样了,窗体出来以后是没有箭头的,但是如果拿个别的窗体挡住画箭头的区域再那开,箭头就出现了,最大化和还原也会出现,但是最小化再还原就不会出现...现在很迷惑,没法解释这个现象。有没有高手给解释一下这是怎么回事啊,不都是WM_PAINT消息吗,为什么会不一样效果呢?
要是有别的思路在panel上画这个箭头的话也请指点一下。
谢谢了!
箭头是画出来了,但是重画窗体的时候,箭头就消失了,就算把画图的语句写在onpaint时间里也没用,后来又覆盖了WM_PAINT消息处理方法,情况就成这样了,窗体出来以后是没有箭头的,但是如果拿个别的窗体挡住画箭头的区域再那开,箭头就出现了,最大化和还原也会出现,但是最小化再还原就不会出现...现在很迷惑,没法解释这个现象。有没有高手给解释一下这是怎么回事啊,不都是WM_PAINT消息吗,为什么会不一样效果呢?
要是有别的思路在panel上画这个箭头的话也请指点一下。
谢谢了!
g: TGPGraphics;
aCanvas : TCanvas;
p: TGPPen;procedure TForm1.FormCreate(Sender: TObject);
begin
aCanvas := TCanvas.Create;
aCanvas.Handle:= GetDC(Panel1.Handle);
g:= TGPGraphics.Create(aCanvas.Handle);
p:= TGPPen.Create(aclBlue, 8);
p.SetEndCap(LineCapArrowAnchor);
end;procedure TForm1.WMPaint(var Msg: TWMPaint);
begin
g.DrawLine(p,10,10,40,40);
inherited;
end;