1

画面表示用に、画像から標準の軸に沿った長方形に単純な四角形の切り抜きを描画/適合する方法はありますか? (そのため、カットアウトは四角形の点を埋めるために歪められます)。私には ImageBrush で可能であるように思われますが、私はそれを見ることができません。

4

2 に答える 2

1

はい。ただし、四辺形によって、非常に簡単なものからやや難しいものまでさまざまです。

整列した長方形

四角形が軸に揃えられた長方形の場合は、CroppedBitmap を使用できます。

位置合わせされていない長方形またはその他の平行四辺形

四角形が任意の平行四辺形 (四角形を含む) の場合、RenderTransform を使用して四角形の角を四角形の境界にマップし、ClipToBounds="True" を設定して、カットアウトのみが表示されるようにします。

<Decorator ClipToBounds="true">
  <Rectangle Fill="{StaticResource SourceImage}" RenderTransform="1 0 0 1 0 0" />
</Decorator>

RenderTransform のマトリックス パラメータを変更することで、任意の平行四辺形を長方形にマッピングできます。簡単な代数が詳細を示します。平行四辺形の任意の 3 つの角を行列変換方程式に代入し、6 つの変換パラメーターを解くだけです。

任意の四角形

四角形が平行四辺形でない場合は、WPF の 2D グラフィックスでは利用できない非アフィン変換を使用する必要があります。ただし、3D システムでは使用できます。次の 4 つのネストされたオブジェクトを作成する必要があります。

  • 内部の長方形の形状を定義する MeshGeometry3D
  • GeometryModel3D を使用してマテリアル (ImageBrush) を定義します。
  • ModelVisual3D 内で変換を定義する
  • Viewport3DVisual を使用して、カメラとビューポートを定義します。

Charles Petzold のブログには、3D ソリューションの計算が掲載されています。

于 2010-06-23T08:52:14.033 に答える
0

トリミングした画像を表示したい場合は、 を使用できますCroppedBitmap

于 2010-06-23T08:21:38.030 に答える