今天整理算法的時候發現在過去在c++中用UINT指針訪問32位ARGB位圖時,每次偏移量正好一個象素,所以直接使用“++”而不是“+= 4”。同理,當直接用座標訪問時,應使用“i * stride / 4 + j” 而不是“i * stride + j”。但轉移到c#代碼時發現,如果同樣使用uint指針訪問位圖,當stride等于width*4時可能不會有問題,一旦noffset不為0,將會出現問題。但次BUG沒有證實每次都會發生。找時間要修正一下代碼,在算法沒有改進的情況下,還是建議使用byte類型指針做位圖訪問。
文章來源:http://spaces.msn.com/sharkoo/Blog/cns!D8E832CE4545AF!153.entry 
補充:當鎖定位圖全部時,stride=width*4,當鎖定的是位圖的一部分時,stride將會不等于width*4。 
新聞熱點
疑難解答