簡體   English   中英

加載高分辨率圖像時性能低下

[英]low performance when an image with high resolution loaded

我開發了一個行為類似於“ Adob​​e photoshop”的實用程序。 用戶可以使用鼠標指針繪制矩形,圓形,...,然后移動或調整其大小。 對於此功能,我假設每個形狀都是一個對象,該對象存儲在容器對象的通用集合中。 當用戶想要更改任何內容時,我知道他單擊的位置以及場景的后面,我選擇了目標對象,依此類推...當屏幕上的對象很多或用戶加載高分辨率圖片時,這種方式會出現問題。

你怎么看?

我該如何解決?

這是有道理的,因為數據集越大,將需要更多的RAM和CPU來處理它。

盡管性能問題很重要,但很多性能問題可能是性能問題,例如線程問題-您有一個線程試圖處理信息,並且阻塞了UI線程,這似乎使系統處於凍結狀態。

您可能需要查看有關StackOverflow的很多信息

事實是,在高分辨率下,計算機需要使用更多的處理器,然后發生這種情況,請記住,即使在Adobe Photoshop中,這也發生在The Gimp中。

問候。

使用諸如dotTrace之類的探查器,找出哪種方法是最常調用的方法,以及哪種方法花費最多的時間來處理。 這些是您要嘗試優化的。 除此之外,您可能必須使用GPU來加快速度。

關於這類問題,請考慮並行擴展: http : //msdn.microsoft.com/zh-cn/concurrency/default.aspx

您擁有的cpu越多,程序運行的速度就越快。

考慮使用性能分析工具(例如ANTS Profiler)來幫助您准確確定瓶頸發生的位置。 高分辨率照片上的真實圖形計算需要大量資源,但是我認為您用來管理和查找對象的邏輯也需要進行一些調整。

高分辨率圖像占用大量內存( 每像素更多 )。 這樣,您對它執行的任何操作都意味着要操作更多的位。

您的程序使用“圖層”嗎?

如果不是,那我猜您是在直接向圖像添加組件-這意味着每個操作都必須操縱位。 因此,如果您不使用圖層,則一定要開始。 圖層將允許您在屏幕上繪制操作,但僅在保存時將它們合並到基本高分辨率圖像中一次。

您正在使用Windows的哪個庫打開圖像?

如果使用的是System.Drawing,則實際上是在使用GDI +,因為它是它的包裝。 GDI +在很多事情上都很不錯,因為它簡化了大量的操作,但是它並不是世界上最快的。 例如,使用[Get | Set] Pixel方法比直接在BitmapData上運行要慢得多。 由於在GDI +之上有大量關於加速操作的文章,因此在此不再贅述。

希望我提供的信息能回答您的一些問題,從而引起新的問題。 祝好運!

暫無
暫無

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

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