如何绘制具有两个圆角且相对角为矩形角的矩形。形状必须是封闭的,以便可以用“画笔”颜色填充。折线方法不会绘制曲线。我可以将弧的点添加到折线点吗?我尝试使用Canvas方法绘制RoundRect,然后将矩形重叠在较低的圆角上,但是当绘制图形的边界而没有填充矩形时,我无法弄清楚如何擦除矩形的上线。注意:如果您认为相关,可以添加我使用的代码。
所需形状的样品:
我在Delphi中得到的样本:
最佳答案
您不必在绘制图形时同时填充图形。您可以先使用一系列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
上绘制。