Delphi 7 - 使用 canvas 绘制带透明芯的圆
Delphi 7 - Draw circle with transparent core using canvas
我正在尝试使用 Delphi 7
和 Canvas
绘制一个简单的圆圈,我怀疑我想做的事情是否可行。
如下图,我想画一个不带core/center的圆:
Jerry Dodge 建议:
- 我不需要红色部分,只需要蓝色部分。
使用的代码:
Canvas.Brush.Style := bsClear;
Canvas.Pen.Style := psSolid;
Canvas.Pen.Color := clGreen;
Canvas.Pen.Width := 20;
Canvas.Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4);
旧信息:
背景图片是一个简单的 TImage
组件,我使用以下命令绘制圆圈:
Canvas.Brush.Color := clgreen;
Canvas.Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4);
可能吗?
在 Tom Brunberg 和 Jerry Dodge 的帮助下解决了!
结果:
感谢大家的帮助!
我可以想出几种方法来做到这一点,但最简单的方法是使用没有填充的大笔宽。例如...
Canvas.Brush.Style := bsClear;
Canvas.Pen.Style := psSolid;
Canvas.Pen.Color := clGreen;
Canvas.Pen.Width := 50;
Canvas.Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4);
然而,在您的情况下,Pie
不是正确的方法,因为它也会在中间留下线条。您将不得不使用 Arc
代替。
这是套路:
procedure SetCircle(centerRadius,CenterAngle:real; r:integer);
{Draw a circle centered at CenterRadius, CenterAngle from image center,
radius of circle drawn is r}
var x,y:integer;
begin
with cfrm.canvas do begin
x:=trunc(midx+CenterRadius*cos(CenterAngle));
y:=trunc(midy+CenterRadius*sin(CenterAngle));
ellipse(x-r,y-r,x+r,y+r);
cfrm.canvas.brush.color:=clyellow;
end;
end;
我正在尝试使用 Delphi 7
和 Canvas
绘制一个简单的圆圈,我怀疑我想做的事情是否可行。
如下图,我想画一个不带core/center的圆:
Jerry Dodge 建议:
- 我不需要红色部分,只需要蓝色部分。
使用的代码:
Canvas.Brush.Style := bsClear;
Canvas.Pen.Style := psSolid;
Canvas.Pen.Color := clGreen;
Canvas.Pen.Width := 20;
Canvas.Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4);
旧信息:
背景图片是一个简单的 TImage
组件,我使用以下命令绘制圆圈:
Canvas.Brush.Color := clgreen;
Canvas.Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4);
可能吗?
在 Tom Brunberg 和 Jerry Dodge 的帮助下解决了!
结果:
感谢大家的帮助!
我可以想出几种方法来做到这一点,但最简单的方法是使用没有填充的大笔宽。例如...
Canvas.Brush.Style := bsClear;
Canvas.Pen.Style := psSolid;
Canvas.Pen.Color := clGreen;
Canvas.Pen.Width := 50;
Canvas.Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4);
然而,在您的情况下,Pie
不是正确的方法,因为它也会在中间留下线条。您将不得不使用 Arc
代替。
这是套路:
procedure SetCircle(centerRadius,CenterAngle:real; r:integer);
{Draw a circle centered at CenterRadius, CenterAngle from image center,
radius of circle drawn is r}
var x,y:integer;
begin
with cfrm.canvas do begin
x:=trunc(midx+CenterRadius*cos(CenterAngle));
y:=trunc(midy+CenterRadius*sin(CenterAngle));
ellipse(x-r,y-r,x+r,y+r);
cfrm.canvas.brush.color:=clyellow;
end;
end;