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]圆上一点我画好后,不是我想要的结果,就是说不是橡皮条的效果,急
}
我想画一个圆,可以随着半径变化而不断变化的圆,
我的代码如下:
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]圆上一点我画好后,不是我想要的结果,就是说不是橡皮条的效果,急
}
是画矩形的,和画圆也差不多
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.
begin
Form1.Canvas.RoundRect(Ax - Ar,Ay,Ax,Ay + AR,Ax + AR,Ay);
end;
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;