c# winform 如何用鼠标滚轮改变pictureBox中图片的大小`?

limon758 2008-09-16 04:07:27
鼠标中键滚轮,向上滚动是放大图片,向下滚动是缩小图片

这个如何做呀

我找了好久也没找到滚轮事件

就找到个MouseWheel,可惜不会用

pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel);

private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel);
}


private void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
{
MessageBox.Show(e.Delta.ToString());
//this.pictureBox1.Width = 50;
}


我这样写一点反映也没有

请教大家了
...全文
4639 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
po123op123 2012-06-02
  • 打赏
  • 举报
回复
可不可以用winfrom控制鼠标滚轮自动滑动
hanxu324_324 2010-10-12
  • 打赏
  • 举报
回复
1232131
天地英豪 2010-10-11
  • 打赏
  • 举报
回复
标记 mark
Nevin82 2010-09-12
  • 打赏
  • 举报
回复
学习.........................
wddpxqq 2010-01-04
  • 打赏
  • 举报
回复
这个要晓习晓习,很哟用的!
wlpsgh 2008-11-18
  • 打赏
  • 举报
回复
mark
hyfahau 2008-11-17
  • 打赏
  • 举报
回复
讨教
drarajawu 2008-09-22
  • 打赏
  • 举报
回复
学习.
wxz280973534 2008-09-16
  • 打赏
  • 举报
回复
学习到了呵呵
yyixin 2008-09-16
  • 打赏
  • 举报
回复
标记
limon758 2008-09-16
  • 打赏
  • 举报
回复
有几个小问题

1,图片显示不显示在pictureBox里无所谓,主要是让图片可以放大或缩小,现在发现pb是放大缩小了,可图片大小没有变,需要图片改变大小

2,每次放大缩小我希望是20象素

3,我希望图片在放大缩小过程中,一直都是居中的状态,现在是默认在左上角了
yagebu1983 2008-09-16
  • 打赏
  • 举报
回复
学习一下!!
北京的雾霾天 2008-09-16
  • 打赏
  • 举报
回复
要是简单点,可以这样来处理:

Image img = Image.FromFile(@"C:\Documents and Settings\All Users\Documents\My Pictures\示例图片\Water lilies.jpg");

private float scale = 1;
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
e.Graphics.ScaleTransform(this.scale, this.scale);
e.Graphics.DrawImage(this.img, p);
}
protected override void OnMouseWheel(MouseEventArgs e)
{
base.OnMouseWheel(e);
int wheels = e.Delta * SystemInformation.MouseWheelScrollLines / 120;
scale -= wheels * 0.001f;
this.Invalidate();
}
njms1984 2008-09-16
  • 打赏
  • 举报
回复
学习
优途科技 2008-09-16
  • 打赏
  • 举报
回复
调整Sizemode为Zoom
ZengHD 2008-09-16
  • 打赏
  • 举报
回复
当鼠标在窗体上滚动时,使用WindowFromPoint判断当前坐标的句柄,用来判断鼠标是不是在pictureBox1上滚动的
然后判断e.Delta

我想
应该可以结帖了

今天的结帖率很低
ZengHD 2008-09-16
  • 打赏
  • 举报
回复
        
如果没有解决的话,可以看看我的代码


[DllImport("user32.dll")]
public static extern int WindowFromPoint(int xPoint, int yPoint);

void Form1_MouseWheel(object sender, MouseEventArgs e)
{
System.Drawing.Point p= PointToScreen(e.Location);
if (WindowFromPoint(p.X, p.Y) == pictureBox1.Handle.ToInt32())
{
if (e.Delta == 120)
{
MessageBox.Show("向前");
}
else if(e.Delta<0)
{
MessageBox.Show("向后");
}
}
}

private void Form1_Load(object sender, EventArgs e)
{
this.MouseWheel += new MouseEventHandler(Form1_MouseWheel);
}
limon758 2008-09-16
  • 打赏
  • 举报
回复
按照2楼的方法,鼠标滚动事件已经可以获得了

但是使用2楼和3楼的MouseWheel方法

都改变不了图片的大小

应该是因为我的Sizemode设置成了AutoSize

我要图片显示为原来的大小,如果是Zoom的话默认显示就小了,而已在滚动时图片不会居中

我需要图片在放大缩小中在panel中是居中变化的

5楼还有什么好方法``

可以发给我
chineselimeng@126.com
fish_yht 2008-09-16
  • 打赏
  • 举报
回复
有个按钮事件
里面可以找到滚轮键值
捕捉键值进行处理就可以了
blestcc 2008-09-16
  • 打赏
  • 举报
回复
結合3樓5樓的答案應該比較完美
加载更多回复(7)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧