溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Winform控件Picture實現(xiàn)圖片拖拽顯示效果

發(fā)布時間:2020-10-15 01:19:03 來源:腳本之家 閱讀:459 作者:喜歡吃魚的青年 欄目:編程語言

最近做了一個小工具,在Winform中對Picture控件有一個需求,可以通過鼠標從外部拖拽圖片到控件的上,釋放鼠標,顯示圖片!

Winform控件Picture實現(xiàn)圖片拖拽顯示效果

首先你需要對你的整個Fom窗口的AllowDrop設(shè)置Ture

Winform控件Picture實現(xiàn)圖片拖拽顯示效果

//函數(shù)從動態(tài)鏈接庫中倒入(模擬鼠標事件)

[System.Runtime.InteropServices.DllImport("user32")]
 private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
 const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模擬鼠標左鍵按下

  const int MOUSEEVENTF_LEFTUP = 0x0004; //模擬鼠標左鍵抬起 
    //設(shè)置靜態(tài)字段傳遞圖片路徑參數(shù)
    public static string path_url;
    //獲取鼠標拖入圖片的絕對路徑
    private void Form1_DragDrop(object sender, DragEventArgs e)
    {
      //獲取當前推拽圖片的路徑
      string path2 = ((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString(); ;
      path_url = path2;
      //模擬鼠標釋放鼠標左鍵的時事件
      mouse_event(MOUSEEVENTF_LEFTUP | MOUSEEVENTF_LEFTUP, Cursor.Position.X, Cursor.Position.Y, 0, 0);
    }
    //判斷鼠標拖入文件的類型判斷是不是文件類型
    private void Form1_DragEnter(object sender, DragEventArgs e)
    {
      if (e.Data.GetDataPresent(DataFormats.FileDrop))
        //需求有一需要從QQ的聊天記錄中拖拽圖片到WinForm窗體中,用ALL會出現(xiàn)QQ的聊天信息中的圖片丟失
        //Link和Move不能從QQ的聊天記錄中拖拽圖片到WinForm窗體中,Copy和Scroll都可以實現(xiàn),推薦使用Copy
        e.Effect = DragDropEffects.Copy;                              
      else
        e.Effect = DragDropEffects.None;
}

Winform控件Picture實現(xiàn)圖片拖拽顯示效果

在來設(shè)置PictureBox的事件

Winform控件Picture實現(xiàn)圖片拖拽顯示效果

//當鼠標在當前控釋放的時候觸發(fā)控件
private void pic_1_MouseUp(object sender, MouseEventArgs e)
{
   //給PictureBox設(shè)置圖片路徑
   pic_1.ImageLocation = path_url;
}

以上就可以完成推拽圖片顯示圖片(無論是本地還是QQ消息框中的圖片都可以實現(xiàn))

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI