1

Silverlight で 15 度回転した Rectangle Shape があります。イメージでいっぱいです。SL の通常の動作は、Fill オブジェクトをその親 (この場合は四角形) と共に回転することです。

Fill オブジェクトの変換効果を無視する方法はありますか? 画像が画面上で引き続き北を向いていることを望みます。

これが私が以下に持っている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>
4

1 に答える 1

1

さまざまなアプローチがありますが、ニーズに最も適したアプローチは、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>

パスは、データに含まれるすべてのジオメトリとこの領域に描画された塗りつぶしに対応できる長方形の領域を持つことになります。長方形ジオメトリは、回転変換が適用された状態で描画され、ジオメトリ内に表示される塗りつぶしの一部のみが実際に表示され、残りはクリップされます。したがって、目的の出力が得られます。

于 2009-12-29T22:07:23.360 に答える