Delphi 7 - 使用 canvas 绘制带透明芯的圆

Delphi 7 - Draw circle with transparent core using canvas

我正在尝试使用 Delphi 7Canvas 绘制一个简单的圆圈,我怀疑我想做的事情是否可行。

如下图,我想画一个不带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;