小白请教!在矩形图片上画圆!

[复制链接]
查看11 | 回复6 | 2021-1-27 05:18:08 | 显示全部楼层 |阅读模式
在矩形图片上,以同一个点(矩形对角线的交点)为圆形,画出多个相同半径差的同心圆!该怎么编程实现。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:18:08 | 显示全部楼层
可以用TImage作为画布,在窗体上放个TImage控件,设置Image为矩形。
绘图代码如下:

procedureTFmMain.btnDrawClick(Sender:TObject);
var
i,r:integer;
begin
//绘制矩形
imgCanvas.Canvas.Pen.Color:=clBlack;
imgCanvas.Canvas.MoveTo(0,0);
imgCanvas.Canvas.LineTo(imgCanvas.Width-1,0);
imgCanvas.Canvas.LineTo(imgCanvas.Width-1,imgCanvas.Height-1);
imgCanvas.Canvas.LineTo(0,imgCanvas.Height-1);
imgCanvas.Canvas.LineTo(0,0);
//绘制圆
r:=imgCanvas.Heightdiv2-2;
fori:=10downto1do
begin
//采用随机色画圆
imgCanvas.Canvas.Pen.Color:=Random($FFFFFF);
imgCanvas.Canvas.Ellipse(imgCanvas.Widthdiv2-r,
imgCanvas.Heightdiv2-r,
imgCanvas.Widthdiv2+r,
imgCanvas.Heightdiv2+r);
r:=r-10;
end;
end;
把绘图代码放在定时器里执行,还会有动画效果




回复

使用道具 举报

千问 | 2021-1-27 05:18:08 | 显示全部楼层
引用1楼天行归来的回复:可以用TImage作为画布,在窗体上放个TImage控件,设置Image为矩形。
绘图代码如下:

procedureTFmMain.btnDrawClick(Sender:TObject);
var
i,r:integer;
begin
//绘制矩形
imgCanvas.Canvas.Pen.Color:=clBlack;
imgCanvas.Canvas.MoveTo(0,0);
imgCanvas.Canvas.LineTo(imgCanvas.Width-1,0);
imgCanvas.Canvas.LineTo(imgCanvas.Width-1,imgCanvas.Height-1);
imgCanvas.Canvas.LineTo(0,imgCanvas.Height-1);
imgCanvas.Canvas.LineTo(0,0);
//绘制圆
r:=imgCanvas.Heightdiv2-2;
fori:=10downto1do
begin
//采用随机色画圆
imgCanvas.Canvas.Pen.Color:=Random($FFFFFF);
imgCanvas.Canvas.Ellipse(imgCanvas.Widthdiv2-r,
imgCanvas.Heightdiv2-r,
imgCanvas.Widthdiv2+r,
imgCanvas.Heightdiv2+r);
r:=r-10;
end;
end;
把绘图代码放在定时器里执行,还会有动画效果



大神,这个是可以在给定的一张矩形图片上实现嘛?
回复

使用道具 举报

千问 | 2021-1-27 05:18:08 | 显示全部楼层
引用2楼weixin_45453416的回复:Quote: 引用1楼天行归来的回复:可以用TImage作为画布,在窗体上放个TImage控件,设置Image为矩形。
绘图代码如下:

procedureTFmMain.btnDrawClick(Sender:TObject);
var
i,r:integer;
begin
//绘制矩形
imgCanvas.Canvas.Pen.Color:=clBlack;
imgCanvas.Canvas.MoveTo(0,0);
imgCanvas.Canvas.LineTo(imgCanvas.Width-1,0);
imgCanvas.Canvas.LineTo(imgCanvas.Width-1,imgCanvas.Height-1);
imgCanvas.Canvas.LineTo(0,imgCanvas.Height-1);
imgCanvas.Canvas.LineTo(0,0);
//绘制圆
r:=imgCanvas.Heightdiv2-2;
fori:=10downto1do
begin
//采用随机色画圆
imgCanvas.Canvas.Pen.Color:=Random($FFFFFF);
imgCanvas.Canvas.Ellipse(imgCanvas.Widthdiv2-r,
imgCanvas.Heightdiv2-r,
imgCanvas.Widthdiv2+r,
imgCanvas.Heightdiv2+r);
r:=r-10;
end;
end;
把绘图代码放在定时器里执行,还会有动画效果



大神,这个是可以在给定的一张矩形图片上实现嘛?

估计你都没有看完我写的程序,程序里已经做了画矩形,你需要多大矩形,修改下相关参数就可以。
回复

使用道具 举报

千问 | 2021-1-27 05:18:08 | 显示全部楼层
不好意思啊大神我的意思是说是需要在一张我自己导入的有色彩的写真照片上画圆不是让程序生成一个矩形
回复

使用道具 举报

千问 | 2021-1-27 05:18:08 | 显示全部楼层
上面代码都给出来了
楼主连Ctrl+C和Ctrl+V都懒得做么?
去CV一下吧,直接运行看效果的
回复

使用道具 举报

千问 | 2021-1-27 05:18:08 | 显示全部楼层
引用4楼weixin_45453416的回复:不好意思啊大神我的意思是说是需要在一张我自己导入的有色彩的写真照片上画圆不是让程序生成一个矩形
放一个TImage,假设名字叫Image1:
Image1.Picture.LoadFromFile('xxx');
Image1.Canvas.Ellipse(...);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行