2

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

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

我想将图像放在我的应用程序窗口中,但按比例缩小到 100 像素乘 100 像素,但我不知道该怎么做。作为矢量图像,轻松缩放的概念似乎很简单,但我错过了一些东西。单击并拖动调整画布的大小,但不调整内部元素的大小。到目前为止,Internet 搜索的用处不大。

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

4

3 回答 3

3

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

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

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

于 2008-11-20T00:57:12.997 回答
1

为了保持纵横比,用 Viewbox.Stretch="Uniform" 在你的画布/网格/任何东西周围包裹一个 Viewbox。

于 2009-10-08T14:16:24.797 回答
0

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

这是最棘手的部分。不同的鼠标光标有不同的效果,具体取决于您将鼠标悬停在对象上的位置。旁边带有加号的小黑指针是渲染变换光标,它可以让您平移(移动 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 回答