2014-07-01 52 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(); 
}