Delphi绘制一个有两个圆角和直角的封闭矩形

标签 delphi delphi-xe

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

所需形状的示例:

enter image description here

我用 Delphi 得到的示例:

enter image description here

最佳答案

您不必在绘制形状的同时填充它。您可以首先使用一系列 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() 使用该 HRGN 在您的 TCanvas 上绘图。

关于Delphi绘制一个有两个圆角和直角的封闭矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30337605/

相关文章:

delphi - 使用嵌入的 dll 作为资源启动程序时出现问题

delphi - 如何转换不同格式的日期和时间?

delphi - 将 png/jpg/gif 转换为 ico

delphi - 使用 Delphi XE 在运行时将 png 图像添加到图像列表

delphi - 如何在 Delphi 中将 "unit only"项添加到 "New"菜单/对象存储库

delphi - NSIS 插件 "nsScreenshot"在 Windows NT 6.x 中无法工作

c - 创建/调用 DLL 时出现问题

delphi - 将 OpenOffice Calc 文件导出为 PDF 时如何尊重打印区域?

delphi - 使用 TFileStream 将对象流式传输到文件

delphi - 如何备份和恢复 Delphi 设置?