用windows.ellipse()画图时怎么给这个图形设置color and style?
另外,这样画出来的图形,如果把窗口最小化再恢复时,原来画的图形就没有了,怎么解决这个问题?我当然不希望是每次激活时都Repaint一下了?
先谢谢各位了!

解决方案 »

  1.   

    你使用api画图?合适的时候,尽量使用canvas,要使用api画图,就得使用其他函数来设置brush和,style,找本api的参考书看看就搞定了
      

  2.   

    用canvas画图不是只能画在窗体上吗?我希望画在某一个地方,比如panel上
      

  3.   

    谁说只能画在窗体上,只要这个东西有HDC都可以,再麻烦点就是有Handle都可以用GetDC得到控件对应的HDC然后就可以画图了,而且很多控件都有TCanvas
      

  4.   

    1 你可以在Ondraw和Onpaint这两个消息响应事件中作绘图工作,但这样可能有闪烁.
    2 如果窗口的有效区被遮住,或者最小化后恢复,windows肯定会重画,同时post一条消息,这好像你不能控制。
      

  5.   

    to delphiboy2003:
    我delphi刚学不久,好多不太明白,您能不能说的详细一点,我真的很急。在帮助文档里我看到说很多控件都有Tcanvas,可是我怎么没找到?只有form1.canvas.是可以
    的,其他的比如说panel根本没有canvas属性,还是我理解错了?如果
    用form1.canvas画的话,那么坐标什么的都不一样了,而且画出来的图形会被别的
    控件挡住了。你能不能说得比较具体一点,谢谢了。
    另外,我有一段代码:
    var
      AShape:Tshape;
    begin
      Ashape:=Tshape.create;
      Ashape.shape:=stRectangle;
      Ashape.left:=0;
      Ashape.top:=0;
      Ashape.width:=100;
      Ashape.height:=100; 
      Ashape.visible:=true; 
    end;
    然后运行,可是怎么看不到这个图形?在线等待
      

  6.   

    to firetoucher:
    api函数 setbkcolor(HDC,colorref)只是设置整个的背景色,并不是设置某个
    图形的背景吧。我画出来的一个Rectangle应该没有hdc吧。用fillRectangle
    倒是可以填充背景,可是为什么只有fillRectangle,没有fill别的图形呢?另外,我确实希望用canvas就能搞定它,可怎么用啊