我畫上使用GDI+
的Form1
一些圈,該圓的中心是Custom Control
小紅色矩形這是從User Control
衍生Form1
的也由GDI+
用幾種顏色繪製的位圖的BackgroundImage
屬性。如何用鼠標在.NET Framework中移動由GDI繪製的圓?
我想要的是,當我用鼠標移動紅色矩形(圓的中心)時,圓形也將跟隨紅色矩形移動。使用MouseDown
,MouseMove
事件,我可以用鼠標平滑地移動紅色矩形。
我的問題是如何移動對應於紅色矩形的圓圈(圓心)。 我啓用了雙緩衝來解決閃爍問題。 CircleCenter
是Custom Control
類的對象(例如紅色矩形)。 GObject
是一個Grahpics對象。 下面是一些關鍵代碼:
public Form1()
{
InitializeComponent();
this.SetStyle(ControlStyles.DoubleBuffer | //enables double-buffering
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
}
Point CCenterPoint = new Point();
private int Diameter = 250;
private void CircleCenterMouseDown(object sender, MouseEventArgs e)
{
CCenterPoint = new Point(-e.X, -e.Y);
}
private void CircleCenterMouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point MousePos = CircleCenter.MousePosition;
MousePos.Offset(CCenterPoint.X, CCenterPoint.Y);
CircleCenter.Location = CircleCenter.Parent.PointToClient(MousePos);
CircleCenter.BringToFront();
CirclePen.Color = Color.Black;
GObject.DrawEllipse(CirclePen, CircleCenter.Left- Diameter/2, CircleCenter.Top - Diameter/2, Diameter, Diameter);
this.Invalidate();
}
}
如何消除由GDI+
中,用黑色圓圈在MouseMove
生產的進行? 我GOOGLE了幾個網站,並沒有得到滿意的答案。希望你能給我一些提示,Thx!
它的工作原理!感謝您的優秀回答! – viperchaos
不客氣,不要忘記標記爲答案。 – 2011-11-26 09:46:03