zoukankan      html  css  js  c++  java
  • Winform 图片鼠标滚动查看(放大,缩小,旋转,拖动查看)[日常随笔]

    方法千千万,我只是其中一笔[通过控制PictureBox来控制图片,图片完全施展在控件中]...几久不做,还真有点陌生!

    窗体构造中添加鼠标滚动:

    1 /// <summary>
    2         /// 窗体构造方法
    3         /// </summary>
    4         public CandidateForm()
    5         {
    6             InitializeComponent();
    7             this.MouseWheel += new MouseEventHandler(CandidateForm_MouseWheel);
    8         }

    滚动监听:并且保持图片正中

     1 /// <summary>
     2         /// 鼠标滚动
     3         /// </summary>
     4         /// <param name="sender"></param>
     5         /// <param name="e"></param>
     6         private void CandidateForm_MouseWheel(object sender, MouseEventArgs e)
     7         {
     8             this.pic.Dock = DockStyle.None;
     9             this.pic.BorderStyle = BorderStyle.FixedSingle;
    10             Size size = this.pic.Size;
    11             size.Width += e.Delta;
    12             if (size.Width > pic.Image.Width)
    13             {
    14                 pic.Width = pic.Image.Width;
    15                 pic.Height = pic.Image.Height;
    16             }
    17             else if (size.Width * pic.Image.Height / pic.Image.Width < pic.Parent.Height - 200)
    18             {
    19                 return;
    20             }
    21             else
    22             {
    23                 pic.Width = size.Width;
    24                 pic.Height = size.Width * pic.Image.Height / pic.Image.Width;
    25             }
    26             pic.Left = (pic.Parent.Width - pic.Width) / 2;
    27             pic.Top = (pic.Parent.Height - pic.Height) / 2;
    28         }

    旋转:

     1 private void 左旋ToolStripMenuItem_Click(object sender, EventArgs e)
     2         {
     3             if (basicBt != null)
     4             {
     5                 basicBt = Tools.Rotate(basicBt, 90);
     6                 height = this.pic.Width;
     7                 width = this.pic.Height;
     8                 setBasicPb(basicBt);
     9             }
    10         }
    11 
    12         private void 右旋ToolStripMenuItem_Click(object sender, EventArgs e)
    13         {
    14             if (basicBt != null)
    15             {
    16                 basicBt = Tools.Rotate(basicBt, 270);
    17                 height = this.pic.Width;
    18                 width = this.pic.Height;
    19                 setBasicPb(basicBt);
    20             }
    21         }

    拖动直接在鼠标点击事件中,对PictureBox位置根据鼠标拖动进行处理就好.关键代码:

    1 //拖动
    2             if (canDrag)
    3             {
    4                pic.Location =
    5                     new Point(pic.Left + e.X - p0.X, pic.Top + e.Y - p0.Y);
    6             }

    如果不是特意做图片查看,一般还会有对图片进行处理的功能,及需要用到鼠标拖动啊,针对原图片的定位等等~~ 则要用到图片的相对位置定位.

    因为使用的是通过改变PictureBox的方法进行处理,所以只需算出比例即可.

    1    rate = (double)pic.Width / (double)pic.Image.Width;
    知识不在于大小,在于总结。如有错误不足,还请不吝指正。
  • 相关阅读:
    2018 蓝桥杯省赛 B 组模拟赛(一)-年龄
    在win10系统下安装和卸载Ubuntu系统(为了搞双系统)的各种办法
    2018 CCPC 中国大学生程序设计竞赛-网络选拔赛 1004(D题 )Find Integer(三角函数+费马大定理)
    HDU(杭州电子科技大学) 2614 Beat (BFS写法)
    SQL server用到的SQL语句备份下
    【SQL Server】SQL触发器经验详解
    SQL SERVER 语句大全
    sqlserver 触发器实例代码
    触发器deleted 表和 inserted 表详解
    SQL server触发器中 update insert delete 分别给写个例子被。
  • 原文地址:https://www.cnblogs.com/peixuanzhihou/p/5014412.html
Copyright © 2011-2022 走看看