我正在尝试制作一个跟踪栏,它将放大和缩小图片框中的图片。这是我当前的代码:
namespace Zoom_in_and_Out_Tool
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private Image imgOriginal;
private void Form1_Load(object sender, EventArgs e)
{
// set image location
imgOriginal = Image.FromFile(@"C:\New Folder\picture1.jpg");
picBox.Image = imgOriginal;
// set Picture Box Attributes
picBox.BackgroundImageLayout = ImageLayout.Stretch;
// set Slider Attributes
zoomSlider.Minimum = 1;
zoomSlider.Maximum = 5;
zoomSlider.SmallChange = 1;
zoomSlider.LargeChange = 1;
zoomSlider.UseWaitCursor = false;
// reduce flickering
this.DoubleBuffered = true;
}
public Image PictureBoxZoom(Image img, Size size)
{
Bitmap bm = new Bitmap(img, Convert.ToInt32(img.Width * size.Width), Convert.ToInt32(img.Height * size.Height));
Graphics grap = Graphics.FromImage(bm);
grap.InterpolationMode = InterpolationMode.HighQualityBicubic;
return bm;
}
private void zoomSlider_Scroll(object sender, EventArgs e)
{
if (zoomSlider.Value > 0)
{
picBox.Image = null;
picBox.Image = PictureBoxZoom(imgOriginal, new Size(zoomSlider.Value, zoomSlider.Value));
}
}
}
}
目前它出现了2个问题。一个是它确实想要使用以下行进行编译 grap.InterpolationMode = InterpolationMode.HighQualityBicubic; . 第二个问题是,当我尝试缩放时出现错误:““ArgumentException was unhandled” 错误:Bitmap bm = new Bitmap(img, Convert.ToInt32(img.Width * size.Width), Convert .ToInt32(img.Height * size.Height)); " 任何帮助都会很棒,
谢谢
更新 第一个错误说:“当前上下文中不存在名称'InterpolationMode'”当我注释掉这一行时的第二个错误是:'NullReferenceException 未处理“对象引用未设置为对象的实例。” 就行 Bitmap bm = new Bitmap(img, Convert.ToInt32(img.Width * size.Width), Convert.ToInt32(img.Height * size.Height));
谢谢