我画上使用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