当前位置: 首页 > 知识库问答 >
问题:

WPF旋转图像并对齐它

弘承运
2023-03-14

我有一个图像组件,我想在其中旋转源:

<Image Name="ImageTarget" HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="Uniform" RenderTransformOrigin=".5,.5">
    <Image.RenderTransform>
        <TransformGroup>
            <ScaleTransform ScaleX="{Binding Main.BindedViewMode, Converter={StaticResource ImageSizeConverter}}" />
            <ScaleTransform ScaleY="{Binding Main.BindedViewMode, Converter={StaticResource ImageSizeConverter}}" />
            <RotateTransform Angle="-90" />
        </TransformGroup>
    </Image.RenderTransform>
</Image>

我从代码中设置了ImageTarget的源代码。

在转换(RenderTransformorMorigin和RotateTransform)之前,我的窗口是这样的:

但在旋转之后:

所以,正如你所看到的,宽度和高度都发生了变化。

所以我的问题是:

  • 为什么大小发生了变化?
  • 如何将旋转后的图像对准左上角(与之前相同)?

谢谢

编辑:大小没有改变,我用不同的大小拍摄了两个不同的屏幕截图,stackoverflow会自动调整它们的大小。

共有2个答案

毕霖
2023-03-14

我建议您使用复合翻译,而不是旋转翻译和缩放翻译。然后,您可以在复合Transform标记内调用旋转和平移来移动对象。

在您的代码中,由于ScaleX/ScaleY,维度发生了更改!

彭开畅
2023-03-14

问题是转换是在布局传递之后应用的。您应该使用LayoutTransform在计算布局之前执行转换:

<Image Name="ImageTarget" HorizontalAlignment="Left" VerticalAlignment="Top" Stretch="Uniform" RenderTransformOrigin=".5,.5">
<Image.LayoutTransform>
    <TransformGroup>
        <ScaleTransform ScaleX="{Binding Main.BindedViewMode, Converter={StaticResource ImageSizeConverter}}" />
        <ScaleTransform ScaleY="{Binding Main.BindedViewMode, Converter={StaticResource ImageSizeConverter}}" />
        <RotateTransform Angle="-90" />
    </TransformGroup>
</Image.LayoutTransform>
 类似资料:
  • 问题内容: 我有一个方法需要旋转,将其存储在新变量中,然后返回new 。这是我的尝试,图像似乎为空或什么。它只是不显示在屏幕上: 当我取出图像时,在屏幕上绘制的图像就很好,没有问题,但是当然没有旋转。 问题答案: 因此,基于此答案中的示例,您应该能够设计一种旋转方法,该方法可以将源图像旋转给定的度数,例如…

  • 我有一个方法,它需要旋转,将其存储在一个新变量中,然后返回新的。这是我的尝试,图像似乎是空的什么的。它只是不显示在屏幕上: 当我取出时,图像在屏幕上绘制得很好,没有任何问题,但当然没有旋转。

  • 我正在创建一个侧边栏导航面板,其中一些链接是持有的,我想要他们显示侧身。下面是当前的导航面板: 分解一下: 菜单图标 下面是图标的HTML 它是CSS: HTML: CSS: 当我将添加到类时,结果如下所示: 我怎样才能旋转这些并且仍然使它们居中?谢谢!

  • 问题内容: 在我的应用程序中,我在div中有一个图像,一个按钮。 我想旋转显示的图像,并在使用jquery单击按钮时保存旋转的图像。 我已经使用了代码: http://code.google.com/p/jquery-rotate/ 和jQuery代码: html代码: 当我使用上述代码时,有两个图像,一个是旧图像,另一个是旋转图像。 在这里我想旋转相同的图像并仅显示旋转的图像。并将旋转的图像保存

  • 问题内容: 我需要能够单独旋转图像(在Java中)。到目前为止,我发现的唯一东西是g2d.drawImage(image,affinetransform,ImageObserver)。不幸的是,我需要在特定点绘制图像,并且没有一种方法带有参数1.分别旋转图像和2.允许我设置x和y。任何帮助表示赞赏 问题答案: 这就是你可以做到的。这段代码假设存在一个名为“ image”的缓冲图像(如你的评论所说)

  • 本节,我们通过平移和旋转画布上下文来旋转图像,然后在变换后的上下文中绘制图像。 图4-11 旋转图像 绘制步骤 按照以下步骤,来旋转图像: 1. 定义画布上下文: window.onload = function(){ var canvas  = document.getElementById("myCanvas"); var context = canvas.getContext("2