我有一个GPU渲染引擎,产生纹理。这些纹理被复制到WriteableBitmap中。此位图用作普通视图中的ImageSource。
现在,我将dpi设置为120,即在Windows控制面板中启用了125%的字体大小设置。
由于这一变化,WritableBitmap看起来真的很难看。它不再是像素完美的,而且看起来像一个糟糕的反别名(可能是因为Wpf在某种程度上扩展了它)。
我玩了以下设置:
但我不能让它看起来很好。我不知道我到底要设置什么值才能得到像素的完美显示。似乎存在多个相互依赖的设置。
一个好的答案将解释哪些设置必须以组合方式设置,这样它才能按预期工作。
发布于 2015-02-17 16:01:03
在xaml中,将SnapsToDevicePixels设置为true。
在设置WritableBitmap、查询ActualWidth和ActualHeight的类中。然后用Dpi的比例因子乘以(1.25表示dpi 120等)。
var width = ActualWidth * _dpi_x_scale;
var height = ActualHeight * _dpi_y_scale;我使用这些宽度和高度值来设置Gpu上渲染纹理的大小。
在创建WritableBitmap时,也要使用这些缩放的宽度/高度,但要确保设置正确的dpi:
_bitmap = new WriteableBitmap(
width,
height,
_dpi_x,
_dpi_y,
PixelFormats.Pbgra32,
null
);这解决了问题。
https://stackoverflow.com/questions/28562954
复制相似问题