http://expert.csdn.net/Expert/topic/1265/1265466.xml?temp=.6246607含有100分送上,共200分
我想画一个圆,可以随着半径变化而不断变化的圆,
我的代码如下:
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
        if(menuCRCircle->Checked && Drawing){
                Image1->Canvas->Pen->Mode=pmNotXor;
                Image1->Canvas->MoveTo(points[0].x,points[0].y);
                Image1->Canvas->LineTo(points[1].x,points[1].y);
                points[1].x=X;
                points[1].y=Y;
                float R;
                R=sqrt((points[0].x-points[1].x)*(points[0].x-points[1].x)+ (points[0].y-points[1].y)*(points[0].y-points[1].y));
                Image1->Canvas->Ellipse(points[0].x-R,points[0].y+R,points[0].x+R,points[0].y-R);
                Image1->Canvas->MoveTo(points[0].x,points[0].y);
                Image1->Canvas->LineTo(points[1].x,points[1].y);
        }
//points[0]为圆心,points[1]圆上一点我画好后,不是我想要的结果,就是说不是橡皮条的效果,急
}

解决方案 »

  1.   

    给你一个Delphi的,我就不给你翻译了。
    是画矩形的,和画圆也差不多
    unit draw;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ExtCtrls;type
      TForm1 = class(TForm)
        procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
          Y: Integer);
        procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
      private
        p1,p2:TPoint;
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      lastx,lasty:integer;
    implementation{$R *.DFM}procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      P1.x:=x;
      P1.y:=y;
      p2:=p1;
      canvas.pen.Mode:=pmNot;
      canvas.pen.Color:=clblack;
      canvas.brush.Style:=bsclear;
    end;procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    begin
       if (shift=[ssleft]) then begin
          canvas.Rectangle(p1.x,p1.y,p2.x,p2.y);  //擦除
          canvas.Rectangle(p1.x,p1.y,x,y);        //重画
          p2.x:=x;
          p2.y:=y;
       end;end;procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      canvas.Rectangle(p1.x,p1.y,p2.x,p2.y);   //擦除}
    end;end.
      

  2.   

    procedure TForm1.tttt(Ax, Ay, AR: integer);
    begin
      Form1.Canvas.RoundRect(Ax - Ar,Ay,Ax,Ay + AR,Ax + AR,Ay);
    end;
      

  3.   

    哦上面错了
    procedure tttt(Ax,Ay,AR:integer);procedure TForm1.tttt(Ax, Ay, AR: integer);
    begin
      Form1.Canvas.Ellipse(Ax - Ar,Ay - AR,Ax + AR,Ay + AR);
    end;