怎样绘制,其具有两个圆角和所述相对的角是矩形的角部的矩形。该形状必须关闭,以便可以用刷子颜色填充。 Polyline方法不绘制曲线。我可以将弧的点添加到多段线点吗?我尝试使用画布方法,然后绘制ROUNDRECT,重叠在下部圆角的矩形,但我无法弄清楚如何drawign形状只是边境时没有填写其删除矩形的上线。注意:如果您认为相关,我可以添加我使用的代码。Delphi的绘制一个闭合矩形的两个圆角和矩形角
样品所需的形状:
样的东西我用Delphi有:
怎样绘制,其具有两个圆角和所述相对的角是矩形的角部的矩形。该形状必须关闭,以便可以用刷子颜色填充。 Polyline方法不绘制曲线。我可以将弧的点添加到多段线点吗?我尝试使用画布方法,然后绘制ROUNDRECT,重叠在下部圆角的矩形,但我无法弄清楚如何drawign形状只是边境时没有填写其删除矩形的上线。注意:如果您认为相关,我可以添加我使用的代码。Delphi的绘制一个闭合矩形的两个圆角和矩形角
样品所需的形状:
样的东西我用Delphi有:
您不必在同一时间,以填补你的形状画出来。您可以使用一系列TCanvas.LineTo()
和TCanvas.ArcTo()
/TCanvas.AngleArc()
调用首先创建的形状,然后事后致电TCanvas.FloodFill()
来填补它。
否则,您可以对TCanvas.RoundRect()
具有相同的填充颜色顶部重叠TCanvas.Rectangle()
,然后用TCanvas.MoveTo()
/TCanvas.LineTo()
绘制在用相同的填充颜色的分界线。
另一种选择是使用TCanvas
绘图方法忘记,只使用Win32 API调用来代替。使用CreateRoundRectRgn()
,CreateRectRgn()
和CombineRn()
创建一个HRGN
有你想要的形状,然后用FillRgn()
和FrameRgn()
使用HRGN
您TCanvas
画。
谢谢您的回答。第一种选择似乎很有前途。我会试一试。第二个选项不起作用,当我想绘制形状透明(意味着我不会填充它)。第三个选项,我不喜欢实现,因为我不觉得自己对Windows API有信心。 – user2383818
亲爱的雷米。原来,使用Windows API比我想象的要容易得多。由TCanvas实施的IMO,Arc方法非常复杂且难以使用。非常感谢! – user2383818