禁用布局缩放WinUI 3.0



如何在WinUI 3.0桌面应用程序中等效UWP XAML UI的ApplicationViewScaling.TrySetDisableLayoutScaling(true) ?

WinUI 3.0应用程序UI已经为DPI缩放进行了调整,但媒体没有。如果你的屏幕尺寸为1080p,媒体尺寸为1080p,但缩放比例为125%,媒体尺寸将大于屏幕尺寸,但应用程序将进行适当调整。如果您有很多媒体,那么可能值得扩展根框架。

要做任何缩放,请执行以下操作:a)针对每个媒体部分本身或b)调整整个应用程序(根框架)的缩放。

为补偿任意缩放,设置待缩放目标的x:Name;例如根帧,或者Xaml中的图像,例如x:Name="root"。你的目标缩放取决于你的缩放和你的窗口、框架、页面的分离。最简单的方法是在页面的Loaded覆盖函数中定位根元素或图像。如果你想调整Frame,它必须是Window的根元素,你可能会瞄准重载的OnNavigated函数。这完全取决于Xaml中窗口、框架和页面之间的分离程度。在缩放发生之前必须加载Xaml,因为必须将TypeInfo分配给元数据树。

root().Scale(float3)标度。要根据设备的缩放来调整缩放,调用root().XamlRoot()并获得光栅化缩放:

float rastScale = (float)root().XamlRoot().RasterizationScale()

然后用:

设置刻度root().Scale({(1/rastScale), (1/rastScale), 1.0f})

当文档说XamlRoot时,您实际上是在调用x:Name,而不是一些静态管道。不能使用this->XamlRoot(),因为它返回null。你不能x:NameXaml类来获得XamlRoot()

相关内容

  • 没有找到相关文章