1、放置一个Groupbox1
2、在Groupbox上放置一个Image1
3、uses PNGImage
4、Image的Pictor属性load一张PNG图
5、使用代码描点,代码如下:
   TCustomCombo(GroupBox1).Canvas.Pen.Color:=clred;
   TCustomCombo(GroupBox1).Canvas.Brush.Color:=clred;
   TCustomCombo(GroupBox1).Canvas.Ellipse(0,0,40,40);     //39,202为垂直数据图中心点
6、alt+tab切换回来所描点消失,或者用其他软件界面拖动到所画的圆上,所描的掉也消失!!请教各位,发完问题后在线等,有描述不清除的对方,我会及时补上!

解决方案 »

  1.   

    5、使用代码描点,代码如下:
      TCustomCombo(GroupBox1).Canvas.Pen.Color:=clred;
      TCustomCombo(GroupBox1).Canvas.Brush.Color:=clred;
      TCustomCombo(GroupBox1).Canvas.Ellipse(0,0,40,40);    //39,202为垂直数据图中心点 你的描点代码是放到哪里执行的? 
    大概需要放到 OnDraw 或者 OnCustomDraw 之类的事件里才能自动刷新。
      

  2.   

    to: Adayuer
    通过Button1触发
      TCustomCombo(GroupBox1).Canvas.Pen.Color:=clred; 
      TCustomCombo(GroupBox1).Canvas.Brush.Color:=clred; 
      TCustomCombo(GroupBox1).Canvas.Ellipse(0,0,40,40);    //39,202为垂直数据图中心点 
      

  3.   

    既然有image,干吗不在image上画?我在image上画从来没出现你说的情况...image1.Canvas.Pen.Color:=clred; 
    image1.Canvas.Brush.Color:=clred; 
    image1.Canvas.Ellipse(0,0,40,40);    //39,202为垂直数据图中心点 
      

  4.   

    TCustomControl = class(TWinControl)
      private
        FCanvas: TCanvas;
        procedure WMPaint(var Message: TWMPaint); message WM_PAINT;
      protected
        procedure Paint; virtual;
        procedure PaintWindow(DC: HDC); override;
        property Canvas: TCanvas read FCanvas;
      public
        constructor Create(AOwner: TComponent); override;
        destructor Destroy; override;
      end;TCustomControl的Canvas属性是只读的,所以写不进去.估计窗口重画时会被load吧,所以切换下就没了
      

  5.   

    画到内存里去【var bt:Tbitmap;】
    再赋值给image
      

  6.   

    to: skylkj我试了一下用Form1 canvas属性画
       Form1.Canvas.Pen.Color:=clred;
       Form1.Canvas.Brush.Color:=clred;
       Form1.Canvas.Ellipse(193,200,197,204);最小化后,然后再点出来,所描的圆圈同样消失了!!!
      

  7.   

    这个可能和windows窗体显示的机制有关,具体没研究过了急的话你就在image上画就是了,以后慢慢研究
      

  8.   

    使用CANVAS注意事项:当窗口进行重画时,画布上的图像将消 
    失,比如当窗口进行最小化又重新恢复时,就会引起画布上图像 
    的消失!
    如果解决这个问题?
      

  9.   

    procedure mydraw;
    begin
      Form1.Canvas.Pen.Color:=clred; 
      Form1.Canvas.Brush.Color:=clred; 
      Form1.Canvas.Ellipse(193,200,197,204); 
    end;FORM1.ONPAINT:=mydraw;
    可以解决你的问题