首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi GDI+ 學習筆記 (27):TGPBitmap 位圖像素操作與翻轉

     編輯:Delphi

像素級存取:複製、水平/垂直翻轉、透明度漸層、ICO 圖示載入

TGPBitmap 提供 GetPixel/SetPixel 直接讀寫像素,雖速度較慢但適合原型開發、小尺寸影像處理。本文示範五大操作:基本複製、水平鏡像、垂直鏡像、左至右透明度漸層、載入系統 ICO 圖示。

1. 基本載入與縮放繪製


var g: TGPGraphics; bit: TGPBitmap;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  bit := TGPBitmap.Create('c:\temp\x.jpg');
  g.DrawImage(bit, 11, 11, bit.GetWidth, bit.GetHeight); // 1:1
  g.DrawImage(bit, 11, 11, bit.GetWidth*0.5, bit.GetHeight*0.5); // 1:2
  bit.Free; g.Free;
end;

2. 像素複製 (雙層迴圈)


for row := 0 to height-1 do
  for col := 0 to width-1 do begin
    bit1.GetPixel(col, row, color);
    bit2.SetPixel(col, row, color);
  end;

3. 水平翻轉 (左右鏡像)


bit2.SetPixel(width - col, row, color); // X 鏡像

4. 垂直翻轉 (上下鏡像)


bit2.SetPixel(col, height - row, color); // Y 鏡像

5. 透明度漸層 (左不透明 → 右全透明)


color := MakeColor(255 * col div width, GetRed(color), GetGreen(color), GetBlue(color));
bit2.SetPixel(col, row, color);

6. 載入系統 ICO 圖示


var ico: HICON; bit: TGPBitmap;
begin
  ico := LoadIcon(0, IDI_QUESTION); // 系統問號圖示
  bit := TGPBitmap.Create(ico);
  g.DrawImage(bit, 10, 10);
  bit.Free;
end;

效能提示

  • GetPixel/SetPixel 為非托管呼叫,大量像素操作極慢。
  • 實務上應使用 BitmapData.LockBits/UnlockBits 取得記憶體指標,配合 MoveMemory 或指標運算批次處理。
  • GDI+ 1.1+ 支援 GetPixel/SetPixel 批次版本 (陣列參數)。

像素操作是影像處理基礎,掌握座標轉換邏輯即可實現鏡像、旋轉、扭曲等幾何變換。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved