2011-11-29 92 views
0

首先我在圖片框中加載圖像。然後我測量其中的區域並創建一張新照片。現在我想在一個面板中加載圖像,並通過鼠標畫一條線。 我加入到我的表格:在面板上加載圖像

private Image imag; 

我也加入到我的項目:

private void drawP_Paint(object sender, PaintEventArgs e) 
{ 
    Graphics g = drawP.CreateGraphics(); 
    g.DrawImage(imag, new Point(0,0)); 
} 

我設置了圖像中的功能:

imag = (Image)bm;  
// or 
imag = picturebox1.Image; // the made picture 
drawP.Invalidate(); 

但在運行項目時,會出現什麼。

+1

asp.net? Silverlight的? WPF?的WinForms? Andriod的? iOS版? –

+0

我猜這是WinForms的樣子。 @Asma,糾正我,如果我重新標記錯誤。 – DaveShaw

回答

2

您應該將代碼放在面板Paint事件中。

private void panel1_Paint(object sender, PaintEventArgs e) 
    { 
     Image imag = Image.FromFile(filename); 
     e.Graphics.DrawImage(imag, new Point(0,0)); 
    } 

這使您確定每次面板都被重新繪製(在因任何原因無效之後)您的圖像可見。

+0

我做了更改,但再次沒有任何結果 –

+0

@AsmaGood:你確定你的圖像'imag'裏面有東西嗎? – Marco

+0

@AsmaGood:你確定在你的面板中沒有包含圖片的東西嗎? – Marco

1

嘗試更改爲此:

private void drawP_Paint(object sender, PaintEventArgs e) 
{ 
    e.Graphics.DrawImage(imag, new Point(0,0)); 
} 

此外,從您的意見,這聽起來像你可能沒有足夠的事件接線。例如:

public Form1() 
{ 
    InitializeComponent(); 
    drawP.Paint += drawP_Paint; 
} 

要繪製圖像的一行:

private void button1_Click(object sender, EventArgs e) { 
    using (Graphics g = Graphics.FromImage(imag)) { 
    g.DrawLine(Pens.Red, new Point(0, 0), new Point(32, 32)); 
    } 
    drawP.Invalidate(); 
} 
+0

我不能寫你的代碼。它給我錯誤 –

+0

@AsmaGood很顯然,如果你告訴我錯誤是什麼,代碼中的位置會對我有幫助。 – LarsTech

+0

它不讓我寫「drawP.Paint + = drawP_Paint;」我應該添加一些代碼,如「使用系統....」嗎? –