德尔福绘制一个带有两个圆角和矩形角的闭合矩形

时间:2015-05-19 23:04:59

标签: delphi delphi-xe

如何绘制一个有两个圆角的矩形,相对的角是矩形角。必须关闭形状,以便可以使用画笔颜色填充。 Polyline方法不绘制曲线。我可以将弧的点添加到折线点吗?我尝试使用Canvas方法绘制RoundRect,然后在下圆角上重叠一个矩形,但是当我只绘制形状的边框而不填充它时,我无法弄清楚如何擦除矩形的上面一行。注意:如果您认为相关,我可以添加我使用的代码。

所需形状的样本:

enter image description here

我用Delphi获得的样本:

enter image description here

1 个答案:

答案 0 :(得分:3)

您不必在绘制时填充形状。您可以先使用一系列TCanvas.LineTo()TCanvas.ArcTo() / TCanvas.AngleArc()来创建形状,然后再调用TCanvas.FloodFill()来填充它。

否则,您可以使用相同的填充颜色在TCanvas.Rectangle()之上重叠TCanvas.RoundRect(),然后使用TCanvas.MoveTo() / TCanvas.LineTo()在相同的分界线上绘制填充颜​​色。

另一种选择是忘记使用TCanvas绘图方法,而只是使用Win32 API调用。使用CreateRoundRectRgn()CreateRectRgn()CombineRn()创建具有所需形状的HRGN,然后使用FillRgn()FrameRgn()来吸引您的TCanvas使用HRGN