delphi canvas如何根据中心点坐标 和矩形的宽度 动态的画出矩形?

delphicanvas如何根据中心点坐标和矩形的宽度动态的画出矩形?谢谢forestry98的回答我试试看... delphi canvas如何根据中心点坐标 和矩形的宽度 动态的画出矩形?
谢谢 forestry98的回答 我试试看
展开
 我来答
ctqcbd
2011-03-05 · TA获得超过683个赞
知道答主
回答量:480
采纳率:0%
帮助的人:280万
展开全部
n1Click(Sender: TObject);
begin
Form1.Canvas.MoveTo(10,10);
Form1.Canvas.LineTo(20,20);//从(10,10)画线到(20,20)
Form1.Canvas.Ellipse(10, 10, 50, 50);//画圆
Form1.Canvas.Pixels[10,10] := clRed;//把(10,10)点显示红色
Form1.Canvas.TextOut(20,20,'写文字');
end;

另外的Delphi中关于Canvas.TextOut的一点资料

Canvas.Font.Color:=clblue;//字体颜色
//Canvas.Brush.Color:=clred;//底色
Canvas.Brush.Style := bsClear;//透明
canvas.textout(0,0,'avalokita');

拉两个 TImage

procedure TfrmMain.FormCreate(Sender: TObject);
begin
Image1.Canvas.Brush.Color := clBlack;
Image1.Canvas.FillRect(Image1.ClientRect);
Image1.Canvas.Font.Color := clRed;
Image1.Canvas.Font.Name := 'Times New Roman';
Image1.Canvas.Font.Size := 18;
Image1.Canvas.TextOut(9, 36, 'Delphi');
end;

// 水平转
procedure TfrmMain.Button1Click(Sender: TObject);
var
i: integer;
begin
for i := 1 to Image1.Width do
BitBlt(Image2.Canvas.Handle, i, 0, 1, Image2.Height,
Image1.Canvas.Handle, Image1.Width - i, 0, SRCCOPY);

Image2.Refresh;
end;

// 垂直转
procedure TfrmMain.Button2Click(Sender: TObject);
var
i: integer;
begin
for i := 1 to Image1.Height do
BitBlt(Image2.Canvas.Handle, 0, i, Image2.Width, 1,
Image1.Canvas.Handle, 0, Image1.Height - i, SRCCOPY);

Image2.Refresh;
end;
---------------------------------------------

1.具有CANVAS属性的控件:
TBitmap,TComboBox,TDBComboBox,TDBGrid,TDBListBox,TDirectoryListBox,
TDrawGrid,TFileListBox,TForm,THeaderControl,TImage,TListBox,TOutline,
TPaintBox,TPrinter,TStatusBar,TStringGrid等,

2.CANVAS属性及命令:篇幅所限,省略参数及格式说明,具体请参考文后程序及DELPHI帮助文件:

canvas.rectangle():画矩形pen.color:定义画笔颜色
roundrect():画圆角矩形pen.width:定义画笔宽度
arc():画弧线(不填充) brush.color:定义填充颜色
chord():画弧线(填充) textout():在固定位置输出字符串
pie:画扇形 textwidth:取字符串高度
polygon():画多边形填充textheight:取字符串宽度
polyline():多点联机(不填充)font.color:指定字体颜色
Pixels():指定固定象素点颜色值font.size:指定字体大小
moveto():指明画线起点 Ellipse():画圆或椭圆
lineto():指明画线终点

3.使用CANVAS注意事项:当窗口进行重画时,画布上的图像将消失,比如当窗口进行最小化又重新恢复时,就会引起画布上图像的消失,另外当刚刚运行程序时,窗口也是属于重新绘制,所以如果在绘制窗口之前在画布上绘图,弹出窗口后将不能显示出图像,比如在TForm1.FormCreate()事件中进行画布绘图操作将是徒劳的,但可以在此事件中进行画布操作的准备工作,比如设置画笔的颜色和宽度等。

procedure TForm1.SpeedButton5MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
if Sender is Tspeedbutton then
begin
statusbar1.canvas.Brush.Color:=clwhite;
statusbar1.canvas.fillRect(statusbar1.Canvas.ClipRect);//清空画布
statusbar1.Panels[0].Style:=psOwnerDraw;
statusbar1.Canvas.font.Color:=clred;//字体颜色
statusbar1.Canvas.Brush.Color:=clblue;//底色
statusbar1.Canvas.brush.style:=bsclear; //透明
statusbar1.Canvas.TextOut(0,5,'This is sample'); //定位x,y坐标轴及输入文字
end;
end;

Canvas.Brush.Style:=bsclear 可以去掉字体的背景
agully
2011-03-04 · TA获得超过545个赞
知道小有建树答主
回答量:494
采纳率:0%
帮助的人:370万
展开全部
Canvas.MoveTo(x,y); //移动光标
Canvas.LineTo(x,y); //画线
Canvas.Rectangle(X1, Y1, X2, Y2); //画框
Canvas.Pen.Width //线宽
Canvas.Pen.Style //线型
如:
procedure TForm1.Button1Click(Sender: TObject);
begin

Canvas.Pen.Width:=10;
Canvas.Pen.Style:=psDash;
Canvas.Pen.Color:=clred;
Canvas.MoveTo(100,100);
Canvas.lineto(200, 200);
Canvas.Pen.Width:=1;
Canvas.Rectangle(10,10,100,100);
end;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
forestry98
2011-03-04 · TA获得超过2442个赞
知道小有建树答主
回答量:1351
采纳率:33%
帮助的人:547万
展开全部
procedure TForm1.Button1Click(Sender: TObject);
begin
DrowRectangle(100,100,200,200);
end;

//中心坐标X、中心坐标Y,矩形宽度、矩形高度
procedure TForm1.DrowRectangle(ACenterX, ACenterY, AWidth, AHeight: Integer);
var
iLeftTop,iRigthBottom: TPoint;
begin
//计算矩形左上角坐标
iLeftTop.X := ACenterX - Ceil(AWidth / 2);
iLeftTop.Y := ACenterY - Ceil(AHeight / 2);
//计算矩形右下角坐标
iRigthBottom.X := iLeftTop.X + AWidth;
iRigthBottom.Y := iLeftTop.Y + AHeight;
//画矩形
Canvas.Rectangle(iLeftTop.X,iLeftTop.Y,iRigthBottom.X,iRigthBottom.Y);
end;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
testerHooK
2011-03-04 · 超过67用户采纳过TA的回答
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:192万
展开全部
用lineTo,剩下的自己去找资料
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式