如何解決GDI+渲染圖片慢的問題?

    項目是做一個畫圖程序,最近加入了一個圖片閃爍的效果,用timer定時每100ms畫一遍,每遍通過colormatrix設置不同的alpha值實現(colormatrix幾乎不會增加負荷,渲染速度僅增加1ms消耗)。效果是沒問題,但是效率有問題了。當畫一個3000*3000的jpeg圖片的時候,debug模式下測試平均需要8ms(graphics的所有參數都設置爲速度優先),此時還比較流暢。但是當圖片縮小後再畫出來就達到35ms左右(通過Gdi.ScaleTransform()進行縮放的),效率明顯下降,卡頓嚴重,鼠標move、click事件都不響應了,傷腦筋了,沒有想到好的解決辦法,放大沒事,就縮小會卡。總結一下,問題的原因就是大幅圖片縮小畫出來效率低。

    多線程能解決嗎?想用主線程的timer發重畫請求道queue裏面,多個線程從queue中取出請求在後臺線程渲染整幅圖片然後發到另一個queue中,主線程從這個queue中取按請求順序取圖片畫到form上。同時主線程響應用戶鼠標move、click等操作改變圖形的座標等狀態。但是對c#多線程不熟,怎麼同步呢?能提高效率嗎?

TO BE CONTINUED...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章