0

初めてGUIプロジェクトに取り組み、Windowsで初めて作業するので、これが本当に初歩的な質問である場合は、事前に謝罪してください。私は、vb.net WPF から始めて、Windows プログラミングに赤ちゃんの一歩を踏み出しています。Visual Studio Express 2012 で作業しています。

ウィンドウ内のすべての要素をウィンドウ自体で拡大縮小する方法を考え出そうとしています。たとえば、1280x720 のウィンドウを作成し、そのウィンドウにいくつかの画像を配置します。上部に 1 つ、隅に 1 つと言ってください。(これは基本的なメディアベースのアプリケーションです)そのウィンドウのサイズを変更すると、ウィンドウ全体がそれに合わせて拡大縮小されるので、ウィンドウが大きくなると画像1と2が大きくなりますが、これは比例して発生する必要があるため、ウィンドウは一方向に大きくなり、一方の画像が他方の画像と重なることはありません。ウィンドウが画像で、サイズを変更しようとしているとします。(オーバーラップは、現在の試みでこれを機能させるのに最も近いものです)。

制作中のレイアウトはより複雑になり、メディア要素 (ビデオ)、画像、テキストなどで構成され、すべてに応じてスケーリングする必要があります。これはユーザーが操作するものではないため、フォーム要素などはありません。そのため、スケーリング中にフォーム フィールドなどを同じサイズに保つ必要はありません。写真を拡大縮小するように、すべてを拡大縮小する必要があります。たとえば、この 1280x720 (16:9) のレイアウトを 1920x1080 の画面に表示した場合、最大化すると同じように見えるだけで大​​きくなります。

誰かがこれで私を正しい方向に向けることができることを願っています。

これまでに試したこと-これに関連してGoogleで見つけたいくつかの記事(間違ったものを検索している可能性があります)により、すべての要素をビューボックスに配置するようになりました。これにより、前述の重複が発生します。

アイデア?

4

1 に答える 1

0

ViewBoxコンテナを使用できると思います。基本的な考え方は次のとおりです:ViewBoxは、拡大縮小された画像であるかのようにコンテンツを拡大縮小します。これは、質問で説明した内容に最も近い結果のようです。Grid絶対サイズの列と行を に入れ、そのViewBoxStretch を Uniform に設定するだけです:

<Viewbox Stretch="Uniform">
    <Grid>
        <..>Your controls, MediaElements, etc
    <Grid>
</Viewbox>

また、(たとえば) Grid Containerと組み合わせる(または完全に置き換える)こともできます。これにより、htmlのパーセント構文に似たスター構文を使用してセルの幅とサイズを指定できます。

もう 1 つの方法は、DockPanel を使用することです。

全体として、似たようなことを達成する方法はたくさんありますが、その方法は、特定の要件のニュアンスに大きく依存します。このチュートリアルを見て、WPF コンテナーの概要とその使用方法を確認してください。

于 2013-04-07T14:37:13.790 に答える