2014-05-03 42 views
0

我創建的圖PROGRAME其中假設採取參數從用戶 (半徑,高度,寬度,....等) 我已經建立了一類具有一個放慢參數(半徑)重繪代碼

public int faceoutline(int r) 
    { 
     Graphic = pictureBox1.CreateGraphics(); 
     Graphic.DrawEllipse(myPen, 0, 0, r, r); 
     return r; 
    } 

然後我把它叫做:

private void button1_Click(object sender, EventArgs e) 
    { 
     faceoutline(int.Parse(textBox1.Text)); 
     pictureBox1.Invalidate(); 
    } 

....並沒有任何反應 我的按鈕代碼複製到一個計時器,但它保持balnking 什麼,我做錯了什麼?!

+0

1.您的渲染代碼應該位於可以在控件重繪自己時調用它的位置,就像在控件的OnPaint覆蓋中一樣。 2.檢查你的筆的顏色和厚度。 3. 0,0座標將在控件的左上角呈現您的橢圓,並至少將其偏移半徑。 –

+0

thx但我使用0,0座標只是爲了試驗代碼 – Zahema

回答

2

您應該將繪圖代碼放置在PictureBoxPaint事件處理程序中,並使用事件參數中提供的Graphics。這樣,每次重新繪製控件時都會執行您的自定義繪圖代碼。

如果你不這樣做,你繪製的任何東西都會在下一次控件重繪時消失。在你的代碼中,你在繪製橢圓後立即調用Invalidate,所以控件在沒有橢圓的情況下重繪...

+0

它的工作很好,謝謝:)'private void pictureBox1_Paint(object sender,PaintEventArgs e) { int r = int.Parse(textBox1.Text); e.Graphics.DrawEllipse(myPen,sp.X,sp.Y,r,r); }' – Zahema