2

私は単純なアプリケーションに取り組んでおり、WPF の使い方を学び始めています。Microsoft Expression Design で 400px x 400px のベクター グラフィックを作成しました。これは主に、より大きなキャンバスで作成する方が簡単だと思ったからです。

400 ピクセルの正方形のキャンバス内の一連のオブジェクトとして、画像を XAML ファイルにエクスポートしました。すべての子オブジェクトは、その 400px キャンバスに基づいて配置されます。

アプリケーション ウィンドウに画像を配置したいのですが、おそらく 100 ピクセル x 100 ピクセルに縮小されましたが、これを行う方法がわかりません。ベクトル画像として、簡単なスケーリングの概念は単純に思えますが、何かが欠けています。クリックアンドドラッグはキャンバスのサイズを変更しますが、内部の要素は変更しません。これまでのところ、インターネット検索はあまり役に立ちませんでした。

ボタンや特別なものではなく、ウィンドウに画像を配置したいだけで、サイズを簡単に制御できます。すべての XAML をウィンドウの XAML にコピーする必要がありますか? 代わりに XAML ファイルを何らかの方法で参照できますか? 画像の要素を画像全体に合わせるにはどうすればよいですか? どんな助けでも大歓迎です。

4

3 に答える 3

3

XAMLをコピーしてタグ内に貼り付けます

1つのオプション-ExpressionBlendに貼り付けた後、キャンバス(左側の要素ツリー)を右クリックし、レイアウトをグリッドに変更します。そしてグリッドに100*100を与える

2番目のオプション-[グループ化]オプションをクリックしてViewBoxを追加し、ViewBoxのサイズを変更します。

于 2008-11-20T00:57:12.997 に答える
1

縦横比を維持するには、Viewbox.Stretch="Uniform" を使用して Viewbox をキャンバス/グリッドなどにラップします。

于 2009-10-08T14:16:24.797 に答える
0

Blend UI は、WPF/Silverlight アプリのこの種の変換を行う際に大いに役立ちます。UIは少しわかりにくいです。XAML をコピーしてまたはに貼り付けたら、画面の左側にあるその項目をクリックできます。特定の項目が黄色で強調表示されます。次に、プロパティパネルまたはマウスを使用して、あらゆる種類のスケール、移動などを実行できます。正しいカーソルがあることを確認してください。

それが最も難しい部分です。オブジェクト上のどこにカーソルを置いたかによって、異なるマウス カーソルの効果が異なります。横にプラスが付いた小さめの暗いポインターはレンダリング変換カーソルで、移動 (x/y の移動)、スケール、回転、およびスキューが可能です。

Visual Studio だけで作業している場合は、次のコードを使用して RenderTransoform をイメージに追加できます。これにより、あらゆる種類の制御が可能になります。いずれかの変換を調整するだけで、すぐに使用できます。

        dot = new Image();
        BitmapImage dotSource = new BitmapImage();
        dotSource.BeginInit();
        string dotImageFile = String.Format("path/to/my/{0}.png", "image");
        dotSource.UriSource = new Uri(@dotImageFile, UriKind.Relative);
        dotSource.EndInit();
        dot.Stretch = Stretch.None;
        dot.Source = dotSource;
        dot.RenderTransformOrigin = new Point(0.5, 0.5);
        dotTransformGroup = new TransformGroup();
        dotScaleTransform = new ScaleTransform(scaleX, scaleX);
        dotSkewTransform = new SkewTransform();
        dotRotateTransform = new RotateTransform();
        dotTranslateTransform = new TranslateTransform();
        dotTransformGroup.Children.Add(dotScaleTransform);
        dotTransformGroup.Children.Add(dotSkewTransform);
        dotTransformGroup.Children.Add(dotRotateTransform);
        dotTransformGroup.Children.Add(dotTranslateTransform);
        dot.RenderTransform = dotTransformGroup;
于 2008-11-21T22:58:57.853 に答える