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

时间:2008-11-19 23:34:46

标签: wpf xaml vector-graphics

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

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

我想将图像放在我的应用程序窗口中,但缩小到100px×100px,但我不知道该怎么做。作为矢量图像,简单缩放的概念看起来很简单,但我遗漏了一些东西。 Click-n-drag调整画布的大小,但不调整其中的元素。到目前为止,互联网搜索一直没有用处。

我只是想把图像放在我的窗口中...不是按钮或任何特殊的东西,并且可以轻松控制它的大小。我是否需要将所有XAML复制到我窗口的XAML中?我可以以某种方式引用XAML文件吗?如何使图像元素与整体图像一起缩放?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

将XAML复制并粘贴到代码

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

第二个选项 - 单击“Group Into”选项并添加ViewBox,并调整ViewBox的大小。

答案 1 :(得分:1)

为了保持宽高比,使用Viewbox.Stretch =“Uniform”包围Viewbox.Stretch =“Uniform”。

答案 2 :(得分:0)

Blend UI可以帮助很多人为WPF / Silverlight应用程序进行这些变换。用户界面有点令人困惑。将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;