2015-05-19 172 views
3

怎样绘制,其具有两个圆角和所述相对的角是矩形的角部的矩形。该形状必须关闭,以便可以用刷子颜色填充。 Polyline方法不绘制曲线。我可以将弧的点添加到多段线点吗?我尝试使用画布方法,然后绘制ROUNDRECT,重叠在下部圆角的矩形,但我无法弄清楚如何drawign形状只是边境时没有填写其删除矩形的上线。注意:如果您认为相关,我可以添加我使用的代码。Delphi的绘制一个闭合矩形的两个圆角和矩形角

样品所需的形状:

enter image description here

样的东西我用Delphi有:

enter image description here

回答

3

您不必在同一时间,以填补你的形状画出来。您可以使用一系列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()使用HRGNTCanvas画。

+0

谢谢您的回答。第一种选择似乎很有前途。我会试一试。第二个选项不起作用,当我想绘制形状透明(意味着我不会填充它)。第三个选项,我不喜欢实现,因为我不觉得自己对Windows API有信心。 – user2383818

+0

亲爱的雷米。原来,使用Windows API比我想象的要容易得多。由TCanvas实施的IMO,Arc方法非常复杂且难以使用。非常感谢! – user2383818