gpt4 book ai didi

WPF高dpi问题

转载 作者:行者123 更新时间:2023-12-04 19:23:41 26 4
gpt4 key购买 nike

我创建了一个简单的 Web 浏览器 WPF 测试应用程序,在 Canvas 中包含图片和文本,窗口设置为 96dpi。

然后我切换到 120 dpi 和 :-((( 显示很乱,图像大小改变了,部分 Canvas 不在 View 中......

当我使用 Winforms 时,我将 AutoScaleMode 属性设置为 None 并且窗口保持其大小,控件也是如此,继承字体的控件正确显示,不模糊也不太大...

我可以做些什么来模仿 W¨F 中的这种(好的)行为?

最佳答案

我不清楚您所说的“网络浏览器 WPF ... 应用程序”是什么意思。 WPF 不在 Web 浏览器中运行,除非您谈论的是 XBAP。或者你在做 Silverlight?或者它只是一个 WPF 导航应用程序而根本不是基于浏览器的?你需要澄清。

当您在高 DPI 模式下运行时,WPF 会自动缩放您的内容。这是预期的行为:如果用户明确表示他们希望屏幕上的所有内容都变大,那么 WPF 将尊重用户的意愿。 “假装高 DPI 不存在,只是以正常的小尺寸显示所有内容并希望它不会激怒用户太多”的旧 WinForms hack 在 WPF 中不可用;如果你努力的话,你可能会效仿他们,但你会被强烈地引导去做正确的事。

WPF 缩放一切,因此您所说的“部分 Canvas 不在 View 中”没有意义。它应该按相同的比例缩放 Canvas 、它的父窗口和它的子元素,所以如果一切都适合 96dpi,它也应该适合 120dpi 和 144dpi。如果不是,那么您正在做一些奇怪的事情,您将必须提供重现该问题的代码示例。

您似乎声称在高 DPI 模式下运行时字体模糊,这听起来很奇怪。字体呈现为矢量,因此即使在高 DPI 模式下,它们也应该清晰地缩放并呈现清晰。我从未见过你描述的模糊字体,所以再次强调,你必须提供一个重现案例。

我唯一希望模糊的是图像。如果您在 UI 中使用光栅(位图)图像(BMP/GIF/JPG/PNG)——例如,工具栏上的图标——那么是的,当它们被缩放时,它们看起来会很糟糕。当您使用小位图并将其放大时,它几乎总是看起来很糟糕。您可以尝试通过使用较大的图像并缩小它们的显示尺寸来解决这个问题——例如,如果您希望工具栏图像为 16x16(在标准 96-dpi 模式下),那么您可以尝试将 32x32 位图放入您的项目,在您的 XAML 中设置 Image 元素的 Width="16"和 Height="16",然后查看是否看起来更好。它实际上在 120dpi 模式下是 20x20 物理像素,在 144dpi 模式下是 24x24,两者仍然会从 32x32 资源缩小,因此比必须按比例放大的 16x16 源图像看起来更好. (不过,我还没有在 WPF 工具栏中尝试过这种技术,所以我不知道它在实践中对典型的工具栏图像的实际效果如何。)

解决缩放图像问题的最佳方法是使用矢量图像而不是光栅图像。不幸的是,很难找到矢量图库。它们很少,相差甚远,通常不如您可以找到的位图图像全面,而且通常价格昂贵。

关于WPF高dpi问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925891/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com