-1

小さな画面の非常に小さなデバイスに表示されるWPFがありますが、オペレーティングシステムの解像度は高くなっています。解像度は変更できないため(ハードウェアの制限)、WPFアプリを「拡大」して、小さなデバイスで使用できるようにする必要があります。

私の考えは、クロムの「ズームイン/ズームアウト」機能のようなことをすることでした(まあ、他のブラウザも)。たとえば、jquery mobileにアクセスして、 ctrl+を押します。WPFアプリにも同様の効果が必要です。

私は次のようなことを考えていました...

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

これにより、「理論的には」WPFは大画面用にレンダリングされていると見なされますが、アプリケーションには実際には2倍の領域(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);
}

次に、ページに 2 つのスケール プロパティを使用して、次を使用しました。

<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 に答える