在c#中创建一个用平铺图像填充的多边形

时间:2010-12-14 12:19:51

标签: c# system.drawing

我正在创建一个应用程序,在用户设计时可视化相框。为了创建框架,我绘制了4个多边形,它们代表了木材的物理位,并使用TextureBrush来填充它。

这适用于左边和上边。但是,对于底边和右边,此方法不起作用。在我看来,TextureBrush是从图像上的点(0,0)平铺而不是在我绘制的多边形内。结果,图块不与多边形对齐。通过调整图像的大小,我可以使图块完美排列。

如何创建一个任意定位的多边形并用平铺图像填充它,从多边形内的点(0,0)开始,而不是画布?

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

实施例

alt text

1 个答案:

答案 0 :(得分:4)

我刚刚找到答案。我正在玩一个BoundingBox添加到TextureBrush构造函数,但我不断得到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;