【问题标题】:Direct2D fuzzy renderingDirect2D 模糊渲染
【发布时间】:2015-11-13 11:33:15
【问题描述】:

我正在尝试使用 Diret2D(SharpDX) 渲染一些图元,但结果令我不满意 - 所有椭圆都是模糊的(见下文)。是否有一些选项可以使椭圆更平滑?我正在将几何图形渲染到 BitmapRenderTarget,然后接收 Bitmap 并对 WindowRenderTarget 执行 DrawBitmap。

Sample

【问题讨论】:

  • 这是锯齿效果,所以抗锯齿就是你想要的。
  • 我已设置 AntialiasMode = AntialiasMode.PerPrimitive。现在椭圆看起来不错,但线条模糊example
  • 如果你的线条不在像素完美的位置上,那就是你必须做出的权衡。
  • 在这里查看我的答案:stackoverflow.com/a/10773729/1191082

标签: c# c++ drawing direct2d sharpdx


【解决方案1】:

三年后仍然没有答案,所以这里是:

将抗锯齿设置为 AntiAliasMode.PerPrimitive 将允许绘制不垂直或不水平的线条,而不会出现像素化或锯齿状。这解决了椭圆的问题,但不能防止直线的模糊性。

OP指的是窄线与像素位置不对齐时出现的模糊,因此无法完美绘制。一个经典的观察结果是,使用AntiAliasMode.PerPrimitive 时,所有线条都指定为一个像素粗的网格会出现一些线条更宽一些更窄,而使用AntiAliasMode.None 一些线条可能会完全消失。

对于垂直和水平线,这可以通过在每条线的位置添加或减去 0.5 像素宽度来解决。此调整将使线条捕捉到精确的像素位置,因此可以正确绘制宽度为 1 的线条。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-11
    • 2016-07-22
    • 2016-02-11
    • 1970-01-01
    • 2012-12-11
    • 2012-04-08
    • 2023-03-20
    • 1970-01-01
    相关资源
    最近更新 更多