我正在尝试绘制一个大图像,表示为System.Drawing.Graphics
表面上的一组瓷砖。
当我不需要扩展Graphics
. 但是当我这样做时,我会在瓷砖之间得到空行。
如何Graphics
在瓷砖之间没有间隙的情况下绘制瓷砖?
还是我应该去别的地方看看?也许您知道我可以用来解决问题的非框架类、第 3 方库等?
下面是两个示例图块,图像,显示问题和重现问题的代码。
float scale = 1.66f;
int width = (int)(128 * scale);
int height = (int)(256 * scale);
using (Bitmap result = new Bitmap(width, height))
{
using (Graphics graphics = Graphics.FromImage(result))
{
graphics.ScaleTransform(scale, scale);
// tried lines below, DOES NOT always help
//graphics.SmoothingMode = SmoothingMode.HighQuality;
//graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
//graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;
//graphics.CompositingQuality = CompositingQuality.HighQuality;
int top;
using (Image bitmap = Image.FromFile("topTile.png"))
{
graphics.DrawImage(bitmap, 0, 0, bitmap.Width, bitmap.Height);
top = bitmap.Height;
}
using (Image bitmap = Image.FromFile("bottomTile.png"))
graphics.DrawImage(bitmap, 0, top, bitmap.Width, bitmap.Height);
}
result.Save("result.png");
}