想实现一个图片缩放功能。分析后发现使用vs 自带的picture box的功能就能实现。具体思路如下:
把picturebox的sizemode设置成stretch,这样图片加载后会自动按照picturebox的size铺满控件。
只要控制picturebox的控件大小就能实现图片的缩放。
后来考虑到窗体大小是固定的,图片放大太多之后部分图片无法显示,于是把picturebox放到了panel中,
给picturebox添加了拖拽功能,这样图片放大后无法显示的部分可以通过拖拽查看。
而且在picture box中添加了对鼠标滚轮的相应。具体代码如下:
designer
中需要手动添加鼠标滚轮对应的事件:
this.pictureBox1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseWheel);
画面的设计效果如下:
鼠标滚轮事件:
private void pictureBox1_MouseWheel(object sender, MouseEventArgs e) {
if (e.Delta > 0)
{
pictureBox1.Width += 100;
pictureBox1.Height += 100;
}
else
{
pictureBox1.Width -= 100;
pictureBox1.Height -= 100;
}
}
e.Delta用来判断滚轮上滑,下滑。
picturebox的mouse up,mouse down用来保存鼠标拖拽的前后位置。
其中只做了简单的picturebox的移动处理,用mouse up的坐标减去mouse down的坐标来处理picturebox的移动。
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
textBox2.Text = e.X.ToString();
textBox4.Text = e.Y.ToString();
pictureBox1.Left = pictureBox1.Left + (Convert.ToInt32(textBox2.Text) - Convert.ToInt32(textBox1.Text));
pictureBox1.Top = pictureBox1.Left + (Convert.ToInt32(textBox4.Text) - Convert.ToInt32(textBox3.Text));
}
打完收工。