這個問題來自論壇提問,並沒有什麼難度,也不需要重畫內容。當然還有一種方法是通過api發送WM_SysCommand 和SC_MOVE,也就是拖動無標題表單的方法 ,但是效果沒有這個好。
using System;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsApplication2
...{
public partial class Form1 : Form
...{
static string strDown = @"AAACAAEAICAAAAsACQAwAQAAFgAAACgAAAAgAAAAQAAAAAEAAQAAAAAAAAIAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAf4AAAD8AAAA/AAAAPwAAAH+AAAD/gAAB/8AAA//AAAN/wAACf+AAAH
9gAADbQAAA2wAAAJsAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAA////////////////////////////////////////////8AP///gH///4
B///+Af///AD///gA///wAH//4AB//+AAf//gAD//4AA///AAP//4AH//+AH///g
D////j////////////////////////////////////////////8=";
static string strUp = @"AAACAAEAICAAAAoACAAwAQAAFgAAACgAAAAgAAAAQAAAAAEAAQAAAAAAAAIAAA
AAAAAAAAAAAAAAAAAAAAAAAAAA////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAf4AAAD8AAAA/AAAAPwAAAH+AAAD/gAAB/8AAA//AAAd/wAAGf+
AAAH9gAADbYAAA2yAAAZsAAAGbAAAAGAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAA////////////////////////////////////////////8AP///
gH///4B///+Af///AD///gA///wAH//4AB//8AAf//AAD//4AA///gAP//4AD//
8AF///AB///5A////5///////////////////////////////////////8=";
Cursor curUp = new Cursor(new System.IO.MemoryStream(Convert.FromBase64String(strUp)));
Cursor curDown = new Cursor(new System.IO.MemoryStream(Convert.FromBase64String(strDown)));
public Form1()
...{
InitializeComponent();
this.pictureBox1.Cursor = curUp;
}
bool bDragging = false;
Point pClicked;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
...{
bDragging = true;
pClicked = new Point(e.X, e.Y);
this.pictureBox1.Cursor = curDown;
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
...{
if (bDragging)
...{
Point oMoveToPoint;
oMoveToPoint = this.PointToClient(pictureBox1.PointToScreen(new Point(e.X, e.Y)));
oMoveToPoint.Offset(pClicked.X * -1, pClicked.Y * -1);
pictureBox1.Location = oMoveToPoint;
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
...{
bDragging = false;
this.pictureBox1.Cursor = curUp;
}
}
}