我正在尝试绘制一个在System.Drawing.Graphics
曲面上表示为一组图块的大图像。
当我不需要缩放Graphics
时,一切都很棒。但是当我这样做时,我在瓷砖之间得到空行。
如何在Graphics
上绘制瓷砖,而瓷砖之间没有间隙?
或者我还能看别的地方?也许你知道我可以用来克服这个问题的非框架类,第三方库等吗?
下面是两个示例图块,图像,显示了重现问题的问题和代码。
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");
}
答案 0 :(得分:0)
我注意到您通过将比例因子乘以初始宽度和高度然后舍入(或可能截断)到最接近的整数来创建具有整数宽度和高度的位图。但是,您可以通过浮点刻度量进行缩放变换,因此缩放量与实际位图宽度和高度不完全匹配。也许调整调用ScaleTransformation()
时使用的比例金额可以解决问题吗?