首页 > 解决方案 > 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);

弧看起来像它有一个句柄:

标签: c++-winrtwin2d

解决方案


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


推荐阅读