2010-12-14 54 views
5

我正在創建一個應用程序,用戶可以根據用戶的需要設計一個圖片框架。爲了創建框架,我繪製了4個表示木材物理位的多邊形,並使用TextureBrush填充它。在c中創建一個填充了平鋪圖像的多邊形

這對左邊和上邊緣很好。但是,對於底部和右側邊緣,此方法不起作用。在我看來,TextureBrush從圖像上的點(0,0)平鋪,而不是在我繪製的多邊形內。結果,瓦片不與多邊形對齊。通過調整圖像的大小,我可以讓瓷磚完美排列。

如何創建一個任意定位的多邊形,並用平鋪圖像填充它,從多邊形內的點(0,0)開始,而不是畫布?

如果有更好的解決方案,我沒有附加到FillPolygon和TextureBrush。

alt text

回答

4

我剛剛找到了答案。我在爲TextureBrush構造函數添加一個BoundingBox,但我一直在收到OutOfMemory異常,並認爲這是我不理解的。原來它在.NET框架

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

解決方法是使用一個轉換到移動紋理

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

Matrix mtx = brush.Transform; 
mtx.Translate(xoffset, 0); 
brush.Transform = mtx; 
錯誤