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]圆上一点我画好后,不是我想要的结果,就是说不是橡皮条的效果,急
}
解决方案 »
- 要实现达到一定次数不能登录,还要添加哪些代码?
- 请教一个关于指针出错的问题
- 内存泄漏之四,明天史无前例300分大放送。
- 能否截获popupmenu消失的事件(就是弹出菜单后,鼠标在菜单外地方点击,让菜单消失)
- 我想指定单元格A1的文本格式为Text,不要Excel自做聪明地截短,如 1415926535897932384626不要处理为 1415926535897900000000
- 利用AdoQry1.sql.loadfromfile('dd.sql')创建视图出错!具体内述!
- type Tclass1=function(i:integer):Tcontrol;是什么意思?
- 图片翻转的问题。。。谢谢大家帮忙了!
- 问个菜鸟问题
- 教教我怎样在DELPHI中查看对象和代码
- 以下一段vb程序,请问用df怎么实现?
- double 用什么函数转成string
是画矩形的,和画圆也差不多
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;