先看效果: 這個小圖標可以進行隨意拖拽,點擊還可以產生事件 隨便演示一下,效果就是這樣的。 下麵直接演示如何製作: 新建一個窗體,設置窗體的FormBorderStyle為None(去掉窗體邊框); 調整窗體的大小,和你的圖標差不多大小就行,至於動態圖,還在測試中,圖標必須是沒有背景的,因為有背景的 ...
先看效果:
這個小圖標可以進行隨意拖拽,點擊還可以產生事件
隨便演示一下,效果就是這樣的。
下麵直接演示如何製作:
新建一個窗體,設置窗體的FormBorderStyle為None(去掉窗體邊框);
調整窗體的大小,和你的圖標差不多大小就行,至於動態圖,還在測試中,圖標必須是沒有背景的,因為有背景的圖片展示出來,即時窗體透明,也會顯示圖片的白色背景,會很醜,所以要選沒有背景的圖片,可以網上找到之後自己拿ps把背景去掉,記住這裡是圖片背景,不是窗體背景!
窗體背景一般預設BackColor為Control,可以不用改,
去屬性中將TransparencyKey改為Control,也就是和窗體背景顏色一致的背景色就行了,這樣整個窗體就透明瞭,在窗體的BackGroundImage中設置你找的無背景圖片,要是太大,就把BackGroundImageLayouyt設置為Zoom
將ShowInTaskBar改為False(不會產生任務欄圖標);
一定要設置TopMost為True(始終置頂);
設置好上面的就開始敲代碼了
具體代碼如下
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Runtime.InteropServices; 8 using System.Text; 9 using System.Threading.Tasks; 10 using System.Windows.Forms; 11 12 namespace UI 13 { 14 public partial class Test01 : Form 15 { 16 public Test01() 17 { 18 InitializeComponent(); 19 } 20 //設置按滑鼠移動窗體,調用外部介面 21 [DllImport("user32.dll")] 22 public static extern bool ReleaseCapture(); 23 [DllImport("user32.dll")] 24 public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); 25 private void Test01_MouseDown(object sender, MouseEventArgs e) 26 { 27 if (e.Button == MouseButtons.Left) 28 { 29 Form form = sender as Form; 30 Point point = form.Location; 31 ReleaseCapture(); //釋放滑鼠捕捉 32 SendMessage(Handle, 0xA1, 0x02, 0); 33 if (form.Location == point) 34 { 35 MessageBox.Show("哈哈"); 36 } 37 38 } 39 } 40 } 41 }View Code
可能前面有點啰嗦,希望大家不要責怪,因為我是怕新手拿到代碼不知道怎麼用,因為我也是從新手過來的,我也是個新手,深有同感。
希望能仔細看一下本課題中是如何處理在mousedown中式如何處理判斷是點擊還是拖動的,因為這個可能在以後會用到,這個問題我本人在網上查了好久都沒有找到解決辦法,然後自己想通過判斷位置是否改變來實現的。
轉載請註明出處,謝謝,我不太會排版,抱歉。這是原創的第一篇博客,請大家見諒!