我正在创建一个应用程序,它可以在用户设计相框时将其可视化。为了创建框架,我绘制了 4 个代表木头的物理位的多边形,并使用 TextureBrush 来填充它。
这对左边缘和上边缘非常有效。但是,对于底部和右侧边缘,此方法不起作用。在我看来,TextureBrush 是从图像上的点 (0,0) 开始平铺的,而不是在我绘制的多边形内。因此,图 block 不与多边形对齐。通过调整图像的大小,我可以使图 block 完美对齐。
如何创建一个任意定位的多边形并用平铺图像填充它,从多边形内的点 (0,0) 开始,而不是 Canvas ?
FillPolygon 和 TextureBrush 如果有更好的解决方案我就不执着了。
例子
最佳答案
我刚刚找到了答案。我正在尝试向 TextureBrush 构造函数添加 BoundingBox,但我一直收到 OutOfMemory 异常,并认为这是我不理解的。结果证明这是 .NET 框架中的错误
解决方法是使用变换来移动纹理
var brush = new TextureBrush(new Bitmap(imagefile));
Matrix mtx = brush.Transform;
mtx.Translate(xoffset, 0);
brush.Transform = mtx;
关于c# - 在 C# 中创建一个填充有平铺图像的多边形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4439075/