-1

我有一个 WPF,它将显示在具有小屏幕的非常小的设备上,但操作系统具有高分辨率。无法更改分辨率(硬件限制),因此我必须“放大”我的 WPF 应用程序,以便它可以在小型设备上使用。

我的想法是在 chrome 中做一些类似“放大/缩小”功能的事情(好吧,其他浏览器也是如此)。例如,访问jquery mobile并按 ctrl+。我希望 WPF 应用程序具有类似的效果。

我在想类似...

ZoomFactor = 2
WPFApp.RenderSize.Width = WPFApp.Size.Width / ZoomFactor
WPFApp.RenderSize.Height = WPFApp.Size.Height / ZoomFactor 

这将“理论上”使 WPF 认为它正在为大屏幕呈现,但应用程序实际上仍将具有两倍的不动产(ZoomFactor)。

然后,我在想 ScaleTransform 会缩放渲染的内容以填充整个应用程序。

WFPApp.RenderedContent.ScaleTransformX = ZoomFactor
WPFApp.RenderedContent.ScaleTransformY = ZoomFactor

这也将允许以任何方式调整应用程序的大小,并且 ZoomFactor 仍将应用于内容。

我对 WPF 比较陌生,所以可能有一种开箱即用的方法,但如果没有,我将如何实现呢?

4

1 回答 1

0

尝试使用带有比例变换的布局变换。

像魅力一样工作。这是我用来生成比例的逻辑。

public static double GetElementScale(Size designSize, Size currentSize)
{
    var ratioY = currentSize.Height / designSize.Height;
    var ratioX =  currentSize.Width / designSize.Width;

    return Math.Max(ratioX, ratioY);
}

然后,在我的页面上有两个比例属性,我使用了以下内容。

<controls:MPage.LayoutTransform>
    <ScaleTransform  ScaleY="{Binding Path=ScaleY, RelativeSource={RelativeSource AncestorType={x:Type controls:MPage}}}" ScaleX="{Binding Path=ScaleX, RelativeSource={RelativeSource AncestorType={x:Type controls:MPage}}}" />
</controls:MPage.LayoutTransform>
于 2013-01-22T00:24:56.340 回答