如何在ApplicationViewScaling.TrySetDisableLayoutScaling(true) 3.0桌面应用程序中实现与UWP的WinUI相当的功能?
发布于 2022-08-02 23:49:41
WinUI 3.0应用程序UI已经进行了调整,以适应新闻部的扩展,但媒体不是。如果您的屏幕大小是1080 p和媒体是1080 p,但缩放是125%,媒体将大于屏幕大小,但应用程序将适当调整。如果您有大量的媒体,这可能是值得的根框架。
若要进行任何缩放,请执行以下操作:( a)针对每个媒体块本身,或( b)调整整个应用程序(根框架)的缩放。
若要补偿任何缩放,请设置要缩放的目标的x:Name
;例如根框架或Xaml中的图像,即x:Name="root"
。目标的位置取决于您正在缩放的是什么,以及您的窗口、框架、页面的分离。最容易的目标是页面加载覆盖函数中的根元素或图像。如果您想要调整框架,它必须是窗口的根元素,并且您可能会以重载函数OnNavigated为目标。这都取决于Xaml中窗口、框架和页面之间的隔离级别。在进行缩放之前,必须加载Xaml,因为必须将TypeInfo分配给MetaData树。
使用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:Name
Xaml类来获取XamlRoot()
。
https://stackoverflow.com/questions/72779843
复制相似问题