2

BitmapSource があると仮定すると (実際には、必要に応じて生のピクセルにもアクセスできます)、PathGeometry をマスクとして使用して画像の特定の部分を切り取るにはどうすればよいでしょうか?

   01234567890123456789
 0 --------------------
 1 |   +     +        |
 2 |      *           |
 3 |          *    )  |
 4 |    *             |
 5 |            (     |
 6 --------------------

(0, 0) から (8, 3) までの四角形を表す PathGeometry があるとすると、次の 2 つの画像のいずれかを取得できるようにしたいと考えています。

   01234567890123456789
 0 --------------------
 1 |   +              |
 2 |      *           |
 3 |                  |
 4 |                  |
 5 |                  |
 6 --------------------

また

   012345678
 0 ---------
 1 |   +   |
 2 |      *|
 3 ---------
4

2 に答える 2

2

わかりましたので、私の例はうまくいくはずです。状況によっては最高のパフォーマンスではないかもしれませんが、出発点にはなります。

このようになります。明らかに、クリップのポイントは状況によって異なりますが、アイデアは得られます。

<Image Source="SomeImage.jpg">
            <Image.Clip>
                <PathGeometry>
                    <PathFigure StartPoint="0,0"
                                IsClosed="True">
                        <LineSegment Point="25,0" />
                        <LineSegment Point="25,25" />
                        <LineSegment Point="0,25" />
                    </PathFigure>
                </PathGeometry>
            </Image.Clip>
        </Image>
于 2010-04-10T21:24:59.877 に答える
0

特定の部分を「切り取る」という意味がよくわかりません。つまり、画像の領域を表示するだけでよいのでしょうか、それとも切り抜いた部分だけの新しい画像を実際に作成する必要があるのでしょうか。

私が最初に考えたのは、BitmapImage を Image 要素のソースとして設定し、Image.Clip プロパティを必要な領域を含むパス ジオメトリに設定するだけの最も簡単な解決策です。

これにより、必要な領域のみが表示され、クリップのパスジオメトリの外側にあるものはすべて「クリップ」されるように、イメージがクリップされます

これを行うと、画像の任意の部分を切り取ることができます。

それはあなたが探しているものですか?

于 2010-04-10T18:16:42.827 に答える