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