【问题标题】:wxWidgets drawing clockwise elliptical arcswxWidgets 绘制顺时针椭圆弧
【发布时间】:2014-06-11 12:54:25
【问题描述】:

docswxDC::DrawEllipticArc 状态:

startend 指定圆弧相对于矩形中心三点钟位置的起点和终点。角度以度为单位指定(360 度是一个完整的圆)。 正值表示逆时针运动。

呼唤:

wxDC::DrawEllipticArc( ... 90, 270 )

给我:

很公平,弧线是从 12 点到 6 点按逆时针方向绘制的。

现在我想在顺时针方向从12点到6点画。所以我打电话:

wxDC::DrawEllipticArc( ... -90, -270 )

但我得到了同样的结果!

我以不同的顺序尝试了 +/-90 和 +/-270 的各种组合,但一切都产生逆时针弧(通常)的 12 点到 6 点或一个完整的圆(有时)我找不到产生“另一半”的组合。

============ 修复=================

在我的输入数据(DXF 文件)中,顺时针方向由小于开始角度的结束角度表示。所以这段代码完成了这项工作

   if( ea < sa ) {
        // required to draw in clockwise direction
        // work arround for wxWidgets bug http://trac.wxwidgets.org/ticket/4437
      ea += 360;
   }
    dc.DrawEllipticArc ( ... sa, ea );

Windows 7 上带有 gcc / codeblocks / mingw 的 wxWidgets 3.0.0

【问题讨论】:

    标签: c++ wxwidgets


    【解决方案1】:

    这个函数有问题,正在讨论here,总结是它几乎可以肯定是错误的,但我们只是不知道如何修复它。请在此处添加您的 cmets。

    话虽如此,我想你可以通过从270450 画一条弧线来达到你需要的结果...

    【讨论】:

    • 尝试登录到 trac 错误跟踪器,但无法通过验证码。我认为 DXF 指示顺时针的方式(起始角度大于结束角度)比使用 -ve 角度更好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    相关资源
    最近更新 更多