要求在某个位置和其他图像的特定多边形内部添加一个图像。
我使用了以下代码:
private static void MergeBitmaps(string ImageFore, string ImageBack)
{
try
{
Point point1 = new Point(833, 278);
Point point2 = new Point(1876, 525);
Point point3 = new Point(1876, 837);
Point point4 = new Point(833, 830);
Point[] curvePoints = { point1, point2, point3, point4 };
Bitmap imgB = new Bitmap(ImageBack);
Bitmap imgF = new Bitmap(ImageFore);
Bitmap m = new Bitmap(ImageBack);
System.Drawing.Graphics myGraphic = System.Drawing.Graphics.FromImage(m);
myGraphic.SmoothingMode = SmoothingMode.HighQuality;
myGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic;
myGraphic.PixelOffsetMode = PixelOffsetMode.HighQuality;
TextureBrush brush = new TextureBrush(imgF);
brush.WrapMode = System.Drawing.Drawing2D.WrapMode.Clamp;
myGraphic.FillPolygon(brush, curvePoints);
myGraphic.Save();
m.Save(@"new location", System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (Exception ex)
{
Console.WriteLine(ex.StackTrace);
}
}
因此,imgF
应放置在由 上的点确定的多边形内imgB
。imgF
应该在该多边形内拉伸以适应。阅读文档我发现应该这样设置:
brush.WrapMode = System.Drawing.Drawing2D.WrapMode.Clamp;
但它不起作用。当它打开时,imgF
根本不绘制。如果该行被删除或设置如下:
brush.WrapMode = System.Drawing.Drawing2D.WrapMode.Tile;
然后imgF
重复几次。
那么如何imgF
进行上浆、贴合、重新调整大小和放置在多边形内呢?
我不需要矩形,因为它不是由相同的底部和向下边缘或左右边缘确定的形状。