- 最後登錄
- 2024-4-21
- 在線時間
- 0 小時
- 註冊時間
- 2013-6-19
- 閱讀權限
- 20
- 精華
- 0
- UID
- 13205727
- 帖子
- 59
- 積分
- 28 點
- 潛水值
- 11770 米
| 如果發覺自己無法使用一些功能或出現問題,請按重新整理一次,並待所有網頁內容完全載入後5秒才進行操作。 大大你好,小弟只是個新手,底下為個人解讀,您參考看看:
底下轉貼大大所提及的 stackoverflow 的連結的原代碼加上個人註解......- var bitmap = new Bitmap(100, 100);
- var data = bitmap.LockBits(new Rectangle(0, 0, 10, 10),
- ImageLockMode.ReadWrite,
- bitmap.PixelFormat);
- //pt指到點陣圖中的第一個像素資料的位址
- var pt = (byte*)data.Scan0;
- //利用Bitmap的資料列掃描寬度除以Bitmap的圖像寬度來取得每個像素點所占位元組
- var bpp = data.Stride / bitmap.Width;
- //此例中 data 的Height 與 Wdth均為10個 pixel
- for (var y = 0; y < data.Height; y++)
- {
- // pt+(y * data.Stride) 來指向每一列的第一筆資料的位址
- var row = pt + (y * data.Stride);
- for (var x = 0; x < data.Width; x++)
- {
- //取得每個Pixel 的位址, row代表每行資料第一筆的位址, bpp是每個Pixel 所占位元組
- //所以用 row + x*bpp 來取得每個像素點的起位址
- var pixel = row + x * bpp;
-
- //底下 bit 應該是打錯了,應該是 byte而不是bit
- for (var bit = 0; bit < bpp; bit++)
- {
- //將所要擷取的像素點的每一個byte內容存放到pixelComponent變數中
- var pixelComponent = pixel[bit];
- }
- }
- }
- bitmap.UnlockBits(data);
複製代碼 以上僅就 stackoverflow 上的原代碼來解讀...
不過建議大大再看一下該網站上底下的其他人留言.......
... |
|