我正在将小图像(例如20x25)调整为更大的图像(例如150x170)。 我的问题不在于质量,正如预期的那样,质量有些模糊。我的问题是边框是在图像的右侧和底部创建浅色边框。有没有办法可以删除它?
我的代码如下:
using (Graphics g = Graphics.FromImage((Image)ResizedImage))
{
g.CompositingQuality = CompositingQuality.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.SmoothingMode = SmoothingMode.HighQuality;
g.DrawImage(OrigImage, new Rectangle(0, 0, Width, Height),
new Rectangle(0, 0, OrigCImage.Width, OrigImage.Height), GraphicsUnit.Pixel);
}
谢谢!
答案 0 :(得分:3)
将此语句添加到您的代码中:
g.PixelOffsetMode = PixelOffsetMode.Half;
现在,您将获得一个在所有四个方面同样“轻盈”的图像。这并没有真正解决我的假设问题。但这是相当不可避免的,内插器只是在位图边缘用完了可用的像素,以便做出更好的猜测。
将PixelOffsetMode保留为原始设置并故意将图像绘制得太大以使边缘效果不可见,可能会更好。
看起来不错:
protected override void OnPaint(PaintEventArgs e) {
e.Graphics.CompositingQuality = CompositingQuality.HighQuality;
e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
Image img = Properties.Resources.progress;
int w = this.ClientSize.Width + this.ClientSize.Width / img.Width;
int h = this.ClientSize.Height + this.ClientSize.Height / img.Height;
Rectangle rc = new Rectangle(0, 0, w, h);
e.Graphics.DrawImage(img, rc);
}
答案 1 :(得分:1)
也许尝试添加
g.PixelOffsetMode = PixelOffsetMode.HighQuality;