【发布时间】:2019-06-04 01:33:34
【问题描述】:
我前段时间在 Direct2D 中创建了这个 UI 框架,以便能够绘制/管理我自己的窗口和小部件。我一直在使用它并根据我的需要对其进行更新,并且效果很好。然而,现在高分辨率显示器是新事物,我遇到了一个小问题。以最佳清晰度绘制图像/图标。
由于我使用的是 Direct2D,所有绘图功能都根据目标机器的 DPI/缩放正常工作,当然基于像素的图像除外,因此 DirectX 不会自动管理。
所以,一开始我只是在 96 DPI 中绘制位图,这意味着如果我有一个 10x10 的图标,并且我通过指定目标矩形来使用像 ID2D1RenderTarget::DrawBitmap 这样的函数,我的图像将是为更高的 DPI 按比例放大。这当然会很明显,而且图标会很模糊。
解决此问题的第一次尝试是创建比默认 DPI 96 大 4 倍的图标。然后,使用相同的 ID2D1RenderTarget::DrawBitmap 并知道这些图像大 4 倍,DrawBitmap 将绘制缩小的图标的放大。这有更好的结果,从 150% 的窗口比例开始,它是完美的。
但是,从 4 倍缩小到 1 倍,结果不是很好,图像有些像素化。比在 Photoshop 中做同样的事情要糟糕得多。
我也试过在 DrawBitmap 之前使用 SetTransform,看看效果是否更好,但完全一样。
所以我的问题是,人们如何处理这个问题。我敢肯定,我不是唯一一个……
【问题讨论】: