簡體   English   中英

C#將位圖加載到PictureBox中 - 慢並阻止UI ..任何替代方案?

[英]C# Load Bitmap into PictureBox - slow and blocks UI .. any alternatives?

我將640x480位圖一個接一個地加載到一個圖片框中。 當我這樣做時,我的UI被阻止了。 例如,如果我在文本框中鍵入內容,該文本框位於我的圖片框所在的文本框中,我將無法立即看到按下的鍵,因為位圖加載會使UI非常慢。會有人處理嗎? 它周圍有什么辦法嗎? 任何示例代碼都會很棒。

謝謝

使用后台工作程序使gui不會凍結(異步調用圖像顯示)。 http://www.dreamincode.net/forums/topic/112547-using-the-backgroundworker-in-c%23/

你的第二個請求有點棘手,我想簡短的回答就是不要依賴gdi +,如果這就是你正在做的事情,因為它已知很慢。 您是如何將圖像加載到圖像框中的?

Picturebox實際上是一個相當“重”的控件,它提供的東西; 在這里使用它可能不合適。 您可以考慮更簡單的容器控件,或繪制表單本身的表面。

如果您想在此處考慮BackgroundWorker或任何其他線程技術,請記住,繪圖本身必須在UI線程上進行; 沒有辦法解決這個問題。

如果從磁盤加載圖像是延遲的來源,您可以考慮將圖像加載到另一個線程上的內存中位圖,然后以某種方式發信號以指示新項目已准備好被繪制。 然后,您將使繪圖表面無效,並根據需要添加新項目。

也; 如果你正在對圖像進行任何縮放,那么在后台線程中執行此操作是合適的 - 這樣,繪圖代碼本身只需要繪制一個未縮放的矩形; 使用GDI + DrawUnscaled功能將位圖復制到完全相同大小的區域實際上非常快。


為了得到更具體的內容,比如實際的代碼,我想看看你現在如何做的代碼。 我甚至不確定你是在“繪制”圖像,而不是簡單地設置Picture / Image屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM