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

5
我正在创建一个应用程序,它将用户设计的图片框架可视化。为了创建这个框架,我绘制了4个多边形来代表木材的物理部分,并使用TextureBrush进行填充。
对于左侧和顶部边缘,这种方法运行良好。然而,对于底部和右侧边缘,这种方法不起作用。我发现TextureBrush从图像的(0,0)点开始平铺,而不是在我绘制的多边形内部。因此,平铺与多边形不对齐。通过调整图像的大小,我可以使平铺完美地对齐。
如何创建任意位置的多边形并使用平铺图像填充,从多边形内部的(0,0)点开始,而不是画布上的点?
如果有更好的解决方案,我不一定要使用FillPolygon和TextureBrush。
示例:
1个回答

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;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接