GDI的数值精度限制?

时间:2015-11-06 16:17:35

标签: windows gdi precision

我使用Windows GDI函数Arc绘制圆弧。它需要参数圆的边界框和两个分隔起始角和结束角的点(不是角度本身)。

当我传递如下参数时,我得到一个异常结果。而不是具有大半径的圆的准平圆弧(大约13069,边界框是正方形),我得到图片上的输出(旋转;第二个版本显示两个端点的位置;第三个是预期的产出。)

Arc(hDC, -25660, -12837, 477, 13300, 475, 462, 476, 66);

enter image description here

我怀疑异常是由于弧的大半径/平坦度,尽管坐标不是那么大。你有什么解释吗?我主要关心的是找到出现这些显着特征的条件,以便解决这些问题。

这是一个产生问题的简单控制台应用程序:

#include <Windows.h>

int main(int argc, char* argv[])
{
    HDC hDC= GetDC(GetForegroundWindow());
    SelectObject(hDC, GetStockObject(WHITE_PEN));

    // Right
    Arc(hDC, -16, 37, 457, 510, 475, 462, 476, 66);

    // Wrong
    Arc(hDC, -25660, -12837, 477, 13300, 475, 462, 476, 66);

    return 0;
}

0 个答案:

没有答案