2017-08-17 46 views
0

我有一個Picturebox(picWorld)的問題。當我想改變它的大小和位置,這樣的代碼,花了很多時間,因爲我認爲這是更新兩次:如何使圖片框停止自動驗證?

private void lblWorld_MouseEnter(object sender, EventArgs e) 
{ 
    picWorld.Size = new Size(148, 148); 
    picWorld.Location = new Point(picWorld.Location.X - 12, picWorld.Location.Y - 12); 
} 

有什麼辦法,使其更快?

+0

爲什麼不改變.Width,.Height,.Left和.Top屬性呢?那就是說,它有多慢? – ainwood

+0

該代碼不慢。爲了確保*繪製*圖像不會花費太多時間以致它變得明顯,您必須注意您使用的位圖。它應該完全適合pbox的大小,因此不需要進行插值。如有必要,請保留位圖的多個副本,每個副本的預先大小與您分配的大小相匹配。它的像素格式非常重要,只有32bppPArgb很快。 –

+0

嘗試使用「picWorld.SetBounds()」方法。 – Bahrom

回答

-1

創建外部變量(喜歡靜態)何時開始存儲和何時結束,所以:

bool now=false; 

private void lblWorld_MouseEnter(object sender, EventArgs e) 
{ 
if (!now) 
{ 
now = true; 
    picWorld.Size = new Size(148, 148); 
    picWorld.Location = new Point(picWorld.Location.X - 12,  picWorld.Location.Y - 12); 
now = false; 
} 

}

+0

問題是,當我更改大小時,圖像無效。當地點改變時,它再次失效。 – Barbod

0

嘗試隱藏它,移動它,然後顯示它:

private void lblWorld_MouseEnter(object sender, EventArgs e) 
{ 
    picWorld.Hide(); 
    picWorld.Size = new Size(148, 148); 
    picWorld.Location = new Point(picWorld.Location.X - 12, picWorld.Location.Y - 12); 
    picWorld.Show(); 
} 
+0

速度很快,但當鼠標移到lblWorld上時,PictureBox就是隱藏和顯示。 – Barbod

+0

它是不是調整大小和移動它像你想要的?它沒有做什麼?我很努力去理解這個問題,如果你在你的文章中提供了更多的信息(上面),這也許會有所幫助。如果你想要一個非常高性能的位圖,可以看看@Hans Passant的評論。 – ainwood