在C#中,要實現PictureBox的平滑縮放,可以使用Graphics對象的DrawImage方法
using System.Drawing;
using System.Windows.Forms;
public class SmoothPictureBox : PictureBox
{
public SmoothPictureBox()
{
this.SetStyle(ControlStyles.ResizeRedraw, true);
}
protected override void OnPaint(PaintEventArgs pe)
{
// 調用基類的OnPaint方法
base.OnPaint(pe);
// 如果圖像存在,則進行繪制
if (this.Image != null)
{
// 創建Graphics對象
Graphics g = pe.Graphics;
// 設置高質量的插值模式和平滑模式
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.SmoothingMode = SmoothingMode.AntiAlias;
// 計算縮放比例
float scaleWidth = (float)this.Width / (float)this.Image.Width;
float scaleHeight = (float)this.Height / (float)this.Image.Height;
// 創建縮放后的圖像
Rectangle destRect = new Rectangle(0, 0, this.Width, this.Height);
g.DrawImage(this.Image, destRect, 0, 0, this.Image.Width, this.Image.Height, GraphicsUnit.Pixel);
}
}
}
這樣,當你調整SmoothPictureBox控件的大小時,它會以平滑的方式顯示縮放后的圖像。