如何在Win2D中绘制半椭圆形?

时间:2019-03-14 23:51:07

标签: c++-winrt win2d

我想在C ++ / winrt应用程序中使用Win2D绘制椭圆弧的下半部或上半部。我可以绘制曲线,但是它的起点包括一条对角线,好像我是从一条直线段开始的-好像图形不是从弧线开始,而是从右下角开始。如何将绘图限制为仅弧形?这是代码和结果图像:

float2 arcSize(100, 6);
auto pathBuilder = CanvasPathBuilder(drawingSession.Device());
pathBuilder.BeginFigure(244, 175);
//Starting at 3 o"clock, sweep pi radians, that is, to 9:00
pathBuilder.AddArc(arcSize,50,6,0.0, 3.14);
pathBuilder.EndFigure(CanvasFigureLoop::Open); //Don't close path
auto geometry = CanvasGeometry::CreatePath(pathBuilder);
session.DrawGeometry(geometry,244, 175, Colors::Black(),1.5);

The arc looks like it has a handle:

1 个答案:

答案 0 :(得分:0)

好的,多亏了Inspectable的提示,我才有了解决方案:问题出在路径的起点。在我的代码中,我错误地使用了建议的圆弧大小作为AddArc的第一个参数,而实际上它实际上应该是圆弧的中心坐标。在此弧线情况下,BeginFigure必须是位于右边缘的点,即圆的3:00。如果ArcCenter相对于BeginFigure正确,则AddArc不会绘制多余的线。 [更新:]附页在这种情况下,DrawGeometry调用的x和y坐标应为零。从BeginFigure绘制它的原始坐标,而不是偏移量。也许这个ps可以使我对这个问题再加-1。