Delphi 7 - 使用画布绘制透明核心的圆圈

时间:2017-04-06 15:01:33

标签: delphi canvas delphi-7

我正在尝试使用Delphi 7Canvas绘制一个简单的圆圈,我怀疑我想做什么是可能的。

如下图所示,我想绘制一个没有核心/中心的圆圈:

Core transparent Pie

有杰里道奇的建议:

enter image description here

  • 我不需要红色部分,只需要蓝色部分。

使用的代码:

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的帮助下解决了!

结果:

tom

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

我可以想到几种方法来做到这一点,但最简单的方法是使用没有填充的大笔宽。例如......

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代替。

答案 1 :(得分:0)

这是例程:

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;