代码之家  ›  专栏  ›  技术社区  ›  Todd Main

如何忽略形状中填充对象的转换(Silverlight)?

  •  1
  • Todd Main  · 技术社区  · 15 年前

    我在Silverlight中有一个旋转15度的矩形。它充满了图像。SL的正常行为是用其父对象(在本例中是矩形)旋转填充对象。

    是否有任何方法可以忽略填充对象的转换效果?我希望图像在屏幕上继续指向北方。

    这是我下面的XAML。我想看看有没有财产或其他方法 不旋转 ImageBrush(image2.png)。

      <Rectangle x:Name="Rectangle_5_ID6" RenderTransformOrigin="0.5 0.5" Height="24" Width="78" Stroke="#000000" StrokeThickness="1" Canvas.Top="25" Canvas.Left="25">
        <Rectangle.RenderTransform>
          <TransformGroup>
            <RotateTransform Angle="15" />
          </TransformGroup>
        </Rectangle.RenderTransform>
        <Rectangle.Fill>
          <ImageBrush ImageSource="image2.png"  />
        </Rectangle.Fill>
      </Rectangle>
    
    1 回复  |  直到 11 年前
        1
  •  1
  •   AnthonyWJones    15 年前

    有很多不同的方法,但我怀疑最适合你需要的方法是使用 Path 相反。

    <Path x:Name="Rectangle_5_ID6" Stroke="Black" StrokeThickness="1" >
        <Path.Data>
            <RectangleGeometry Rect="0, 0, 78, 24" >
                <RectangleGeometry.Transform>
                    <RotateTransform Angle="15" CenterX="39" CenterY="12" />
                </RectangleGeometry.Transform>
            </RectangleGeometry>
        </Path.Data>
        <Path.Fill>
            <ImageBrush ImageSource="image2.png" />
        </Path.Fill>
    </Path>
    

    路径最后有一个矩形区域,可以容纳其数据中包含的所有几何图形以及绘制到此区域中的填充。绘制矩形几何图形时应用了旋转变换,只有几何图形中显示的填充部分是可见的,其余部分被剪裁。因此,您得到所需的输出。