2014-07-01 22 views
0

我想移动已由这些代码创建的'x'。我需要添加什么才能让'x'能够再次移动?在这种情况下它不放在我希望它在的位置。移动g.drawstring'x'已创建在图片框上

using (Graphics g = Graphics.FromHwnd(pictureBox1.Handle)) 
{ 
    using (Font myFont = new Font("Calibri", 8)) 
    { 
     g.DrawString("X", myFont, Brushes.Red, new PointF(e.X, e.Y)); 
    } 
} 
+0

您直接飞溅像素到窗口,很少正确的事。 “移动”它需要首先清理飞溅,请调用pictureBox1.Refresh()。总是倾向于使用Paint事件。 –

+0

我真的不明白你的意思。如果你能给我一个例子,有可能吗?我一直坚持这一段时间。我非常需要帮助:( – user3766178

+0

请解释一下你的意思是移动吗?是否鼠标移动? –

回答

0

不要创建图形与FromHwnd对象。处理picturebox的Paint事件。在那里做所有的绘画(用e.Graphics)。

当您想要“移动”X时,更改paint方法查看的一些变量,并调用picturebox上的Refresh。

这里有一个简单的例子:

private int posX = 10; 
private int posY = 10; 
private Font font = new Font("Calibri", 8); 

private void pictureBox1_Paint(object sender, PaintEventArgs e) 
{ 
    e.Graphics.DrawString("x", font, Brushes.Black, posX, posY); 
} 

private void pictureBox1_Click(object sender, EventArgs e) 
{ 
    posX += 10; 
    posY += 10; 
    pictureBox1.Refresh(); 
}