Canvas.Brush.Color := clRed;
    canvas.Brush.CleanupInstance;
    Canvas.Brush.Style := bsClear (1) ;
    form1.Canvas.Ellipse(10,10,100,100);
    form1.Canvas.Ellipse(60,60,150,150);
如果有(1)这句话,图像是透明了,但是没有颜色了,如果没有,其中的一个圆就是弧了,
如何得到既能看到两个圆又有颜色。

解决方案 »

  1.   

    Canvas.Brush.Color := clRed;
        canvas.Brush.CleanupInstance;
        //Canvas.Brush.Style := bsClear;
        Canvas.Pen.Mode := pmMask;//新加的...
        Canvas.Ellipse(10,10,100,100);
        Canvas.Ellipse(60,60,150,150);
    如何?
      

  2.   

    谢谢,问题已经解决。
    但是如果使用下面代码该如何实现哪?
    var
      pen:HPEN;
      SolidBrush:HBRUSH;
      ACanvas:HDC;
    begin
      aCanvas:=canvas.Handle;
      pen:=CreatePen(PS_INSIDEFRAME ,2,255);
      SolidBrush:=CreateSolidBrush(Color);
      SelectObject(ACanvas,SolidBrush);
      SelectObject(aCanvas,pen);
      Ellipse(ACanvas,10,10,100,100);
      Ellipse(ACanvas,60,60,150,150);
      deleteObject(pen);
      deleteObject(SolidBrush);
      

  3.   

    请版主删除 yql20042001(ggd) ( ) 信誉:100 回复的帖子。谢谢。
      

  4.   

    SetROP2 (hdc, iDrawMode) ;
      

  5.   

    var
      vPen: HPEN;
      vSolidBrush: HBRUSH;
      vCanvas: HDC;
    begin
      vCanvas := Canvas.Handle;
      vPen := CreatePen(PS_SOLID, 1, clBlack);
      vSolidBrush := CreateSolidBrush(clRed);
      SelectObject(vCanvas, vSolidBrush);
      SelectObject(vCanvas, vPen);
      SetROP2 (vCanvas, R2_MASKPEN); //
      Ellipse(vCanvas, 10, 10, 100, 100);
      Ellipse(vCanvas, 60, 60, 150, 150);
      DeleteObject(vPen);
      DeleteObject(vSolidBrush);
    end;