Delphi画一个带两个圆角的封闭矩形和一个矩形角
Delphi draw a closed rectangle with two rounded corners and to rectangular corners
如何画出一个长方形,有两个圆角,对角是直角。形状必须是闭合的,这样它才能被画笔颜色填充。 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
.
如何画出一个长方形,有两个圆角,对角是直角。形状必须是闭合的,这样它才能被画笔颜色填充。 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
.