亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

C#控件picturebox實現圖像拖拽和縮放

2019-10-29 19:58:48
字體:
來源:轉載
供稿:網友

本文實例為大家分享了C# picturebox實現圖像拖拽和縮放的具體代碼,供大家參考,具體內容如下

1.核心步驟:

①新建Point類型全局變量mouseDownPoint,記錄拖拽過程中鼠標位置;

②MouseDown事件記錄Cursor位置;

③MouseMove事件計算移動矢量,并更新pictureBox1.Location。

代碼:

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)  {   if (e.Button == MouseButtons.Left)   {    mouseDownPoint.X = Cursor.Position.X; //記錄鼠標左鍵按下時位置    mouseDownPoint.Y = Cursor.Position.Y;        isMove = true;    pictureBox1.Focus(); //鼠標滾輪事件(縮放時)需要picturebox有焦點   }  }  private void pictureBox1_MouseUp(object sender, MouseEventArgs e)  {   if (e.Button == MouseButtons.Left)   {    isMove = false;       }  }  private void pictureBox1_MouseMove(object sender, MouseEventArgs e)  {   pictureBox1.Focus(); //鼠標在picturebox上時才有焦點,此時可以縮放   if (isMove)   {    int x, y;   //新的pictureBox1.Location(x,y)    int moveX, moveY; //X方向,Y方向移動大小。    moveX = Cursor.Position.X - mouseDownPoint.X;    moveY = Cursor.Position.Y - mouseDownPoint.Y;    x = pictureBox1.Location.X + moveX;    y = pictureBox1.Location.Y + moveY;        pictureBox1.Location = new Point(x, y);    mouseDownPoint.X = Cursor.Position.X;    mouseDownPoint.Y = Cursor.Position.Y;       }  }    private void panel2_MouseDown(object sender, MouseEventArgs e)  {   if (e.Button == MouseButtons.Left)   {    mouseDownPoint.X = Cursor.Position.X; //記錄鼠標左鍵按下時位置    mouseDownPoint.Y = Cursor.Position.Y;    isMove = true;   }  }  private void panel2_MouseUp(object sender, MouseEventArgs e)  {   if (e.Button == MouseButtons.Left)   {    isMove = false;   }  }  private void panel2_MouseMove(object sender, MouseEventArgs e)  {   panel2.Focus(); //鼠標不在picturebox上時焦點給別的控件,此時無法縮放      if (isMove)   {    int x, y;   //新的pictureBox1.Location(x,y)    int moveX, moveY; //X方向,Y方向移動大小。    moveX = Cursor.Position.X - mouseDownPoint.X;    moveY = Cursor.Position.Y - mouseDownPoint.Y;    x = pictureBox1.Location.X + moveX;    y = pictureBox1.Location.Y + moveY;    pictureBox1.Location = new Point(x, y);    mouseDownPoint.X = Cursor.Position.X;    mouseDownPoint.Y = Cursor.Position.Y;   }  }

2.圖像縮放

核心思想:利用picturebox的zoom模式,根據圖像顯示大小更改picturebox大小,記錄鼠標位置補償縮放位移,實現錨點縮放,即以鼠標位置為中心進行縮放。
zoomstep --- 自己定義滾輪滑動縮放大小

代碼:

//實現錨點縮放(以鼠標所指位置為中心縮放);  //步驟:  //①先改picturebox長寬,長寬改變量一樣;  //②獲取縮放后picturebox中實際顯示圖像的長寬,這里長寬是不一樣的;  //③將picturebox的長寬設置為顯示圖像的長寬;  //④補償picturebox因縮放產生的位移,實現錨點縮放。  // 注釋:為啥要②③步?由于zoom模式的機制,把picturebox背景設為黑就知道為啥了。  //這里需要獲取zoom模式下picturebox所顯示圖像的大小信息,添加 using System.Reflection;  //pictureBox1_MouseWheel事件沒找到。。。手動添加,別忘在Form1.Designer.cs的“Windows 窗體設計器生成的代碼”里加入:    //this.pictureBox1.MouseWheel += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseWheel)。  private void pictureBox1_MouseWheel(object sender, MouseEventArgs e)  {   int x = e.Location.X;   int y = e.Location.Y;   int ow = pictureBox1.Width;   int oh = pictureBox1.Height;      int VX, VY;  //因縮放產生的位移矢量   if (e.Delta > 0) //放大   {    //第①步    pictureBox1.Width += zoomStep;    pictureBox1.Height += zoomStep;    //第②步    PropertyInfo pInfo = pictureBox1.GetType().GetProperty("ImageRectangle", BindingFlags.Instance |     BindingFlags.NonPublic);    Rectangle rect = (Rectangle)pInfo.GetValue(pictureBox1, null);    //第③步    pictureBox1.Width = rect.Width;    pictureBox1.Height = rect.Height;   }   if (e.Delta < 0) //縮小   {    //防止一直縮成負值    if (pictureBox1.Width < myBmp.Width / 10)     return;        pictureBox1.Width -= zoomStep;    pictureBox1.Height -= zoomStep;    PropertyInfo pInfo = pictureBox1.GetType().GetProperty("ImageRectangle", BindingFlags.Instance |     BindingFlags.NonPublic);    Rectangle rect = (Rectangle)pInfo.GetValue(pictureBox1, null);    pictureBox1.Width = rect.Width;    pictureBox1.Height = rect.Height;   }   //第④步,求因縮放產生的位移,進行補償,實現錨點縮放的效果   VX = (int)((double)x * (ow - pictureBox1.Width) / ow);   VY = (int)((double)y * (oh - pictureBox1.Height) / oh);   pictureBox1.Location = new Point(pictureBox1.Location.X + VX, pictureBox1.Location.Y + VY);}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线观看免费全集电视剧网站| 日韩免费观看网站| 欧美激情综合亚洲一二区| 久久精品人人做人人爽| 国产日韩欧美一二三区| 裸体女人亚洲精品一区| 国产成人精品免费久久久久| 日韩麻豆第一页| 成人免费自拍视频| 亚洲欧洲日韩国产| 欧美激情亚洲激情| 97婷婷涩涩精品一区| 日韩av电影免费观看高清| 伊人久久免费视频| 91午夜理伦私人影院| 久热精品视频在线| 在线午夜精品自拍| 神马国产精品影院av| 中文字幕在线看视频国产欧美在线看完整| 综合av色偷偷网| 亚洲精品国产成人| 亚洲激情在线观看视频免费| 亚洲自拍偷拍在线| 欧美裸体xxxx极品少妇| 精品视频一区在线视频| 久久69精品久久久久久国产越南| 亚洲自拍偷拍视频| 欧美极品美女视频网站在线观看免费| 日韩专区在线播放| 亚洲男人天天操| 欧美视频中文字幕在线| 亚洲性猛交xxxxwww| 欧美成人自拍视频| 91精品在线国产| 亚洲香蕉成人av网站在线观看| 国产精品网站视频| 国产精品电影观看| 欧美性生交大片免网| 欧美黄色性视频| 日韩av电影手机在线观看| 色妞久久福利网| 欧美午夜精品在线| 亚洲视频精品在线| 欧美精品日韩www.p站| 亚洲女成人图区| 欧美激情一区二区三级高清视频| 91九色国产视频| 日韩av最新在线观看| 日韩**中文字幕毛片| 久久久久久久国产精品视频| 亚洲第一天堂无码专区| 国产亚洲欧美另类中文| 黑人巨大精品欧美一区免费视频| 精品久久久精品| 久久综合免费视频| 亚洲福利在线视频| 美女扒开尿口让男人操亚洲视频网站| 国产欧洲精品视频| 欧美色道久久88综合亚洲精品| 国产成人精品免费久久久久| 日韩av免费看| 久久久电影免费观看完整版| 日本精品久久久| 欧美壮男野外gaytube| 成人激情视频免费在线| 爱福利视频一区| 久久免费精品日本久久中文字幕| 国产精品免费电影| 欧美精品福利视频| 欧美大荫蒂xxx| 92版电视剧仙鹤神针在线观看| 亚洲永久免费观看| 欧洲成人免费aa| 亚洲缚视频在线观看| 精品国内自产拍在线观看| 国产一区二区三区三区在线观看| 中文字幕视频一区二区在线有码| 国产v综合ⅴ日韩v欧美大片| 国产亚洲成av人片在线观看桃| 国产成人97精品免费看片| 欧美另类精品xxxx孕妇| 日韩中文字幕欧美| 亚洲一区二区日本| 欧美亚洲成人xxx| 日韩欧美福利视频| 成人黄色av播放免费| 一区二区欧美在线| 亚洲国产精品成人精品| 国产精品免费观看在线| 中文字幕av一区中文字幕天堂| 亚洲美女精品成人在线视频| 2019中文字幕在线观看| 亚洲精品成a人在线观看| 精品国产成人av| 国产中文日韩欧美| 4438全国亚洲精品在线观看视频| 欧美日韩色婷婷| 亚洲国产精品系列| 国产亚洲美女精品久久久| 在线国产精品视频| 日韩av在线一区二区| 2023亚洲男人天堂| 亚洲女人被黑人巨大进入al| 欧美成人黑人xx视频免费观看| 亚洲电影第1页| 国产精品爽爽爽| 欧美性猛交xxxx免费看久久久| 国产成人综合精品| 日本精品免费观看| 午夜精品久久久久久久99黑人| 91久久久久久| 国产精品揄拍一区二区| 久久免费视频这里只有精品| 久久久久久久一区二区| 亚洲欧美国产精品va在线观看| 久久视频免费在线播放| 国产日韩欧美视频| 欧美成人sm免费视频| 日韩在线观看免费高清完整版| 欧美日韩福利电影| 2019av中文字幕| 欧美一级大片在线免费观看| 91国内揄拍国内精品对白| 久久香蕉国产线看观看av| 日韩欧美在线一区| 国产精品最新在线观看| 91久久久精品| 亚洲精品之草原avav久久| 国产福利视频一区二区| 欧美性极品xxxx做受| 91中文精品字幕在线视频| 久久精品国产欧美亚洲人人爽| 亚洲国产精品国自产拍av秋霞| 搡老女人一区二区三区视频tv| 91欧美精品午夜性色福利在线| 久久香蕉精品香蕉| 国产69久久精品成人看| 久久天天躁狠狠躁夜夜爽蜜月| 精品国产31久久久久久| 日韩视频亚洲视频| 成人久久久久爱| 69久久夜色精品国产7777| 日韩一区av在线| 久久久久久美女| 亚洲精品短视频| 精品久久久999| 亚洲精品女av网站| 久久天堂av综合合色| 国产精品视频一区二区高潮| 日韩精品免费在线视频| 91精品久久久久久久久不口人| 亚洲男人天堂古典| 欧美午夜电影在线| 国产v综合ⅴ日韩v欧美大片| 日本精品免费观看| 亚洲成人网在线| 在线视频中文亚洲| 91成人在线播放| 亚洲人成网站在线播| 97精品国产97久久久久久免费| 欧美在线一级视频| 日av在线播放中文不卡| 91香蕉嫩草神马影院在线观看| 欧美亚州一区二区三区|