我正在创建一个应用程序,可以在用户设计时可视化相框.为了创建框架,我绘制了4个多边形,它们代表木材的物理位,并使用TextureBrush来填充它.
这适用于左边和上边缘.但是,对于底边和右边,此方法不起作用.在我看来,TextureBrush是从图像上的点(0,0)平铺而不是在我绘制的多边形内.结果,图块不与多边形对齐.通过调整图像的大小,我可以让瓷砖完美排列.
如何创建一个任意定位的多边形并用平铺图像填充它,从多边形内的点(0,0)开始,而不是画布?
如果有更好的解决方案,我没有附加到FillPolygon和TextureBrush.
例

我刚刚找到了答案。我正在尝试向 TextureBrush 构造函数添加 BoundingBox,但我不断收到 OutOfMemory 异常,并认为这是我不理解的原因。事实证明这是 .NET 框架中的一个错误
解决方法是使用变换来移动纹理
var brush = new TextureBrush(new Bitmap(imagefile));
Matrix mtx = brush.Transform;
mtx.Translate(xoffset, 0);
brush.Transform = mtx;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1633 次 |
| 最近记录: |