【发布时间】:2015-05-19 23:04:58
【问题描述】:
如何绘制一个有两个圆角且对角是矩形角的矩形。形状必须是闭合的,这样才能用画笔颜色填充。 Polyline 方法不绘制曲线。我可以将弧的点添加到折线点吗?我尝试使用 Canvas 方法绘制一个 RoundRect ,然后在下圆角上重叠一个矩形,但是当只绘制形状的边框而不填充它时,我无法弄清楚如何擦除矩形的上线。注意:如果您认为相关,我可以添加我使用的代码。
所需形状的样本:
我使用 Delphi 得到的示例:
【问题讨论】:
如何绘制一个有两个圆角且对角是矩形角的矩形。形状必须是闭合的,这样才能用画笔颜色填充。 Polyline 方法不绘制曲线。我可以将弧的点添加到折线点吗?我尝试使用 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 绘制。
【讨论】: