我用Image2.Canvas.Ellipse(Circle.Left,Circle.Top,Circle.Right,Circle.Bottom);
画的圆是实心的,如何画空心圆?

解决方案 »

  1.   

    那是因为image本身的问题,只要在上面画,就会自动有背景颜色,你可以在其他组件上画,比如form或者panel
      

  2.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        procedure FormPaint(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormPaint(Sender: TObject);
    begin
      canvas.Pen.Color:=clGreen;
      canvas.Ellipse(100,100,300,300);
    end;end.
      

  3.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
      private
         fselecting:boolean;
         fbeginpt,fendpt:tpoint;
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      fselecting:=true;
      fbeginpt:=Form1.ScreenToClient(mouse.CursorPos);
    end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      fselecting:=false;
      fendpt:=Form1.ScreenToClient(mouse.CursorPos);
      Self.Repaint;
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
      fendpt:=Form1.ScreenToClient(mouse.CursorPos);
      if fselecting then
      begin
        Canvas.FillRect(Canvas.ClipRect);
        canvas.Ellipse(rect(fbeginpt,fendpt));
        canvas.Pen.Color:=clred;
        Canvas.Pen.Width:=1;
      end;
    end;end.
      

  4.   

    这个就可以,画之前先设置
    Canvas.Brush.Style := bsClear;
      

  5.   

    另类思路:放个圆形、透明的Tshape