我正在创建一个应用程序,在用户设计时可视化相框。为了创建框架,我绘制了4个多边形,它们代表了木材的物理位,并使用TextureBrush来填充它。
这适用于左边和上边。但是,对于底边和右边,此方法不起作用。在我看来,TextureBrush是从图像上的点(0,0)平铺而不是在我绘制的多边形内。结果,图块不与多边形对齐。通过调整图像的大小,我可以使图块完美排列。
如何创建一个任意定位的多边形并用平铺图像填充它,从多边形内的点(0,0)开始,而不是画布?
如果有更好的解决方案,我没有附加到FillPolygon和TextureBrush。
实施例
答案 0 :(得分:4)
我刚刚找到答案。我正在玩一个BoundingBox添加到TextureBrush构造函数,但我不断得到OutOfMemory异常,并认为这是我不理解。原来这是.NET框架中的一个错误
解决方法是使用转换来移动纹理
var brush = new TextureBrush(new Bitmap(imagefile));
Matrix mtx = brush.Transform;
mtx.Translate(xoffset, 0);
brush.Transform = mtx;