【问题标题】:Direct2D Coordinate erroDirect2D坐标错误
【发布时间】:2020-08-14 05:07:31
【问题描述】:

我正在用direct2d 做一个测试程序来显示线条,但是我注意到了一个小细节,那就是当我告诉direct2d 画一条虚线(100,200) 和(500,200) 时,direct2d 真的没有画出开头点 (100,200) 处的直线,但它会少画一个像素,也就是说,它在坐标 (100,99) 处坐标。有人知道为什么吗?我使用没有抗锯齿模式的 direct2d 检查了这个细节,并在调试输出中显示了鼠标坐标。

【问题讨论】:

    标签: c++ winapi directx coordinate-systems direct2d


    【解决方案1】:

    这是 Direct2D 自己的设计造成的。

    准确地说,直线的坐标是从 (99.5, 199.5) - (500.5, 200.5)。

    @Rick Brewster's answer 已经解释了这些。

    当你给它一个像素坐标例如 (100, 120) 时,它指的是 跨越像素的像素元素的左上角和左上角 坐标 (100, 120) 到 (101, 121)(包括顶部/左侧, 右/下是排他的)。因为它是一条水平直线 有效地从 (99.5, 119.5) 得到一个填充的矩形 - (300.5, 120.5)。

    所以如果你想画一条覆盖像素 (100, 200) 的线到 (500, 200),可以使用锯齿渲染,也可以使用半像素偏移。

    【讨论】:

    • @FrancoCortes 很高兴听到这个消息。如果我的回答对你有用,请标记。这对阅读此线程的其他社区成员可能是有益的。参考:How does accepting an answer work?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多