Bob*_*Bob 11 .net c# wpf user-interface antialiasing
我正在编写一个小的"登录"对话框,并且出于美观原因在对话框的顶部嵌入了横幅.一切顺利,除了默认情况下,WPF反对别名整个图像,使其中包含的文本令人沮丧模糊.
经过一些搜索后,前几页的结果显示,人们普遍认为在WPF中无法禁用抗锯齿功能.可以确认,否则否认这个?
对我来说这是一个小问题 - 我会从图像中取出文本,然后在背景图像上叠加带有相同文本的标签以达到相同的效果(尽管我必须承认,这有点烦人).
谢谢,罗布
Ray*_*rns 17
据我所知,WPF在缩放位图时总是会进行抗锯齿处理.但是,您应该能够通过避免位图缩放来实现目标.
有两个步骤:
SnapsToDevicePixels="true"
您的图像要计算所需的ScaleTransform,请计算屏幕的DPI,如下所示:
var DPI = Win32Functions.GetSystemMetrics(SM_CYICON) / SystemParameters.IconHeight * 96;
Run Code Online (Sandbox Code Playgroud)
然后对于位图,执行:
var scale = bitmapDPI / DPI;
var transform = new ScaleTransform(scale, scale);
Run Code Online (Sandbox Code Playgroud)
这将使您的位图像素与设备像素完全匹配.WPF不会拉伸位图,因此不应该有抗锯齿.
如果您确实希望在高DPI屏幕上拉伸图像但是没有消除锯齿(例如,将所有像素加倍),只需使用您喜欢的任何算法在您自己的代码中拉伸位图,并将上面的内容与拉伸位图一起使用.
归档时间: |
|
查看次数: |
11154 次 |
最近记录: |