Wpf 如何在应用程序中放置/缩放XAML图形?

Wpf 如何在应用程序中放置/缩放XAML图形?,wpf,xaml,vector-graphics,Wpf,Xaml,Vector Graphics,我正在开发一个简单的应用程序,开始学习如何使用WPF。我在微软Expression Design中以400px乘400px的速度创建了一个矢量图形,主要是因为我认为在更大的画布上创建它会更容易 我已经将图像导出到一个XAML文件中,作为400px正方形画布中的一系列对象。所有子对象都基于该400px画布进行定位 我想把图像放在我的应用程序窗口中,但可能会缩小到100px乘以100px,但我不知道如何做到这一点。作为矢量图像,轻松缩放的概念似乎很简单,但我缺少了一些东西。单击并拖动可调整画布的大小

我正在开发一个简单的应用程序,开始学习如何使用WPF。我在微软Expression Design中以400px乘400px的速度创建了一个矢量图形,主要是因为我认为在更大的画布上创建它会更容易

我已经将图像导出到一个XAML文件中,作为400px正方形画布中的一系列对象。所有子对象都基于该400px画布进行定位

我想把图像放在我的应用程序窗口中,但可能会缩小到100px乘以100px,但我不知道如何做到这一点。作为矢量图像,轻松缩放的概念似乎很简单,但我缺少了一些东西。单击并拖动可调整画布的大小,但不会调整其中的元素。到目前为止,互联网搜索的用处不大


我只想把图像放在我的窗口。。。不在一个按钮或任何特殊的,并有容易控制其大小。是否需要将所有XAML复制到窗口的XAML中?我可以以某种方式引用XAML文件吗?如何使图像的元素与整体图像成比例?任何帮助都将不胜感激。

将XAML复制并粘贴到您的标签中

一个选项-将其粘贴到Expression blend后,右键单击画布(左侧元素树)并将布局更改为网格。给网格加100*100


第二个选项-单击“分组到”选项并添加ViewBox,然后调整ViewBox的大小。

Blend UI可以为WPF/Silverlight应用程序进行这些类型的转换。用户界面有点混乱。将XAML复制并粘贴到或中后,可以单击屏幕左侧的项目。您将看到特定项目以黄色突出显示。然后,您可以在“属性”面板或使用鼠标进行各种缩放、移动等操作,只要确保光标正确即可

这是最棘手的部分。不同的鼠标光标具有不同的效果,具体取决于您将鼠标悬停在对象上的位置。旁边带有加号的小黑指针是“渲染变换”(Render Transform)光标,可用于平移(移动x/y)、缩放、旋转和倾斜

如果您仅在VisualStudio中工作,则可以使用以下代码将RenderTransform添加到图像中。这会给你各种各样的控制。只要调整任何变换,您就可以开始了

        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;

为了保持纵横比,请在画布/网格/任意位置周围使用Viewbox.Stretch=“Uniform”包装一个Viewbox