2010-12-14 21 views
5

私は、ユーザーが設計した画像フレームを視覚化するアプリケーションを作成しています。フレームを作成するには、木の物理的なビットを表す4つのポリゴンを描画し、それを塗りつぶすためにTextureBrushを使用しています。Cでタイル画像で塗りつぶしたポリゴンを作成する#

これは、左端と上端には問題ありません。ただし、下端と右端の場合、このメソッドは機能しません。 TextureBrushは描画されたポリゴン内ではなく、画像上の点(0,0)からタイル張りされているように見えます。その結果、タイルはポリゴンと整列しません。画像のサイズを調整することで、タイルを完全に整列させることができます。

どのように任意の位置に配置されたポリゴンを作成し、キャンバスではなくポリゴン内の点(0,0)から始まるタイル画像で塗りつぶすのですか?

もっと良い解決策があれば、私はFillPolygonとTextureBrushには付いていません。

alt text

答えて

4

私は答えを見つけました。私はBoundingBoxをTextureBrushコンストラクタに追加して遊んでいましたが、OutOfMemory例外が発生し続けていて、それが私には理解できないと思っていました。それは、.NETフレームワークの仕事は、周りの質感

var brush = new TextureBrush(new Bitmap(imagefile)); 

Matrix mtx = brush.Transform; 
mtx.Translate(xoffset, 0); 
brush.Transform = mtx; 
に移動するための変換を使用することです

http://connect.microsoft.com/VisualStudio/feedback/details/90973/texturebrush-constructor-throws-out-of-memory-exception-when-providing-the-bounding-rectangle

のバグだが判明

関連する問題