跳轉至內容

BlitzMax/模組/圖形/畫素圖

來自華夏公益教科書,自由的教科書

畫素圖提供矩形畫素區域的儲存。

你可以使用 CreatePixmap 命令建立一個新的畫素圖,或者使用 LoadPixmap 載入一個畫素圖。

畫素圖有 5 個屬性:寬度、高度、指向畫素影像素的位元組指標、間距和格式。

你可以使用 PixmapPixelPtr 命令檢索指向畫素影像素的指標。

畫素圖的間距是指畫素圖中一行畫素與下一行畫素之間的位元組數。要檢索畫素圖的間距,請使用 PixmapPitch 命令。

畫素圖的畫素格式決定畫素圖中的畫素如何在記憶體中儲存。如果你想透過畫素圖的畫素指標直接訪問畫素,則必須考慮這一點。你可以使用 PixmapFormat 命令檢索畫素圖的格式,並使用 ConvertPixmap 將畫素圖從一種格式轉換為另一種格式。

你還可以使用 ResizePixmap 調整畫素圖的大小,並使用 XFlipPixmapYFlipPixmap 水平或垂直翻轉畫素圖。

畫素圖型別

欄位
  • pixels
  • width
  • height
  • pitch
  • format
  • capacity
方法
  • PixelPtr
  • Window
  • Copy
  • Paste
  • Convert
  • ReadPixel
  • WritePixel
  • ClearPixels
函式
  • Create
  • CreateStatic

TPixmap:欄位

[編輯 | 編輯原始碼]
pixels

欄位 pixels:Byte Ptr

描述: 指向畫素影像素的位元組指標

width

欄位 width

描述: 畫素圖的寬度(以畫素為單位)

height

欄位 height

描述: 畫素圖的高度(以畫素為單位)

pitch

欄位 pitch

描述: 畫素圖的間距(以位元組為單位)

format

欄位 format

描述: 畫素圖的畫素格式

capacity

欄位 capacity

描述: 畫素圖的容量(以位元組為單位),對於靜態畫素圖,值為 -1

TPixmap:方法

[編輯 | 編輯原始碼]
PixelPtr

方法 PixelPtr:Byte Ptr( x,y )

描述: 獲取畫素的記憶體地址

返回: 指向座標為 x, y 的畫素的位元組指標

Window

方法 Window:TPixmap( x,y,width,height )

描述: 在畫素圖中建立一個虛擬視窗

返回: 一個引用指定矩形的靜態畫素圖。

Copy

方法 Copy:TPixmap()

描述: 複製畫素圖

返回: 一個新的 TPixmap 物件。

Paste

方法 Paste( source:TPixmap,x,y )

描述: 貼上畫素圖

Convert

方法 Convert:TPixmap( format )

描述: 轉換畫素圖

返回: 一個以指定格式建立的新 TPixmap 物件

ReadPixel

方法 ReadPixel( x,y )

描述: 從畫素圖中讀取畫素

返回: 指定座標的畫素,打包成整數

WritePixel

方法 WritePixel( x,y,argb )

描述: 將畫素寫入畫素圖

ClearPixels

方法 ClearPixels( argb )

描述: 清除畫素圖

TPixmap:函式

[編輯 | 編輯原始碼]
Create

函式 Create:TPixmap( width,height,format,align=4 )

描述: 建立畫素圖

返回: 一個新的 TPixmap 物件

CreateStatic

函式 CreateStatic:TPixmap( pixels:Byte Ptr,width,height,pitch,format )

描述: 建立靜態畫素圖

返回: 一個新的 TPixmap 物件

TPixmapLoader

[編輯 | 編輯原始碼]

畫素圖載入器的抽象基型別

要建立一個新的畫素圖載入器,你應該擴充套件 TPixmapLoader 並實現 LoadPixmap 方法。

要安裝你的畫素圖載入器,只需使用 New 建立一個例項。

方法
  • LoadPixmap

TPixmapLoader:方法

[編輯 | 編輯原始碼]
LoadPixmap

方法 LoadPixmap:TPixmap( stream:TStream )

描述: 載入畫素圖

資訊: 此方法必須透過擴充套件型別來實現。

CreatePixmap

[編輯 | 編輯原始碼]

函式 CreatePixmap:TPixmap( width,height,format,align_bytes=4 )

描述: 建立畫素圖

返回: 一個指定 widthheight 的新畫素圖物件

資訊: format 應該是以下之一

格式 描述
PF_A8 8 位 alpha
PF_I8 8 位強度
PF_RGB888 24 位大端 RGB
PF_BGR888 24 位小端 RGB
PF_RGBA8888 32 位大端 RGB 帶 alpha
PF_BGRA8888 32 位小端 RGB 帶 alpha

請注意,新建立的畫素圖將包含隨機資料。 ClearPixels 可用於在使用前將所有畫素設定為已知值。

CreateStaticPixmap

[編輯 | 編輯原始碼]

函式 CreateStaticPixmap:TPixmap( pixels:Byte Ptr,width,height,pitch,format )

描述: 使用現有畫素資料建立畫素圖

返回: 一個引用現有記憶體塊的新畫素圖物件

資訊: 當畫素圖被刪除時,靜態畫素圖引用的記憶體不會被釋放。

參見 CreatePixmap 以瞭解有效的畫素圖格式。

CopyPixmap

[編輯 | 編輯原始碼]

函式 CopyPixmap:TPixmap( pixmap:TPixmap )

描述: 複製畫素圖

返回: 一個新的畫素圖物件

ConvertPixmap

[編輯 | 編輯原始碼]

函式 ConvertPixmap:TPixmap( pixmap:TPixmap,format )

描述: 轉換影像的畫素格式

返回值: 一個具有指定畫素格式的新影像物件

資訊: 請參閱 CreatePixmap 獲取有效的影像格式。

PixmapWidth

[edit | edit source]

函式 PixmapWidth( pixmap:TPixmap )

描述: 獲取影像寬度

返回值: pixmap 的寬度(以畫素為單位)

PixmapHeight

[edit | edit source]

函式 PixmapHeight( pixmap:TPixmap )

描述: 獲取影像寬度

返回值: pixmap 的高度(以畫素為單位)

PixmapPitch

[edit | edit source]

函式 PixmapPitch( pixmap:TPixmap )

描述: 獲取影像步長

返回值: pixmap 的步長(以位元組為單位)

資訊: 步長是指一行的畫素起始位置到下一行畫素起始位置之間的位元組差。

PixmapFormat

[edit | edit source]

函式 PixmapFormat( pixmap:TPixmap )

描述: 獲取影像格式

返回值: pixmap 中儲存的畫素的格式

資訊: 請參閱 CreatePixmap 獲取支援的格式。

PixmapPixelPtr

[edit | edit source]

函式 PixmapPixelPtr:Byte Ptr( pixmap:TPixmap,x=0,y=0 )

描述: 獲取影像畫素

返回值: 指向 pixmap 中儲存的畫素的位元組指標

PixmapWindow

[edit | edit source]

函式 PixmapWindow:TPixmap( pixmap:TPixmap,x,y,width,height )

描述: 建立影像視窗

返回: 一個新的畫素圖物件

資訊: PixmapWindowpixmap 中建立一個“虛擬”視窗。

MaskPixmap

[edit | edit source]

函式 MaskPixmap:TPixmap( pixmap:TPixmap,mask_red,mask_green,mask_blue )

描述: 對影像進行遮罩

返回: 一個新的畫素圖物件

資訊: MaskPixmap 會建立一個新的影像,其中在原始 pixmap 中畫素顏色與 mask_redmask_greenmask_blue 相匹配的地方,其 alpha 分量設定為“0”。mask_redmask_greenmask_blue 應該在 0 到 255 之間。

XFlipPixmap

[edit | edit source]

函式 XFlipPixmap:TPixmap( pixmap:TPixmap )

描述: 水平翻轉影像

返回: 一個新的畫素圖物件

YFlipPixmap

[edit | edit source]

函式 YFlipPixmap:TPixmap( pixmap:TPixmap )

描述: 垂直翻轉影像

返回: 一個新的畫素圖物件

ResizePixmap

[edit | edit source]

函式 ResizePixmap:TPixmap( pixmap:TPixmap,width,height )

描述: 調整影像大小

返回: 一個指定 widthheight 的新畫素圖物件

LoadPixmap

[edit | edit source]

函式 LoadPixmap:TPixmap( url:Object )

描述: 載入畫素圖

返回值: 一個影像物件

ReadPixel

[edit | edit source]

函式 ReadPixel( pixmap:TPixmap,x,y )

描述: 從畫素圖中讀取畫素

返回值: 一個 32 位畫素值

資訊: 返回的 32 位值包含以下分量

位 24-31 畫素 alpha
位 16-23 畫素 red
位 8-15 畫素 green
位 0-7 畫素 blue

WritePixel

[edit | edit source]

函式 WritePixel( pixmap:TPixmap,x,y,argb )

描述: 將畫素寫入畫素圖

資訊: 32 位 argb 值包含以下分量

位 24-31 畫素 alpha
位 16-23 畫素 red
位 8-15 畫素 green
位 0-7 畫素 blue

ClearPixels

[edit | edit source]

函式 ClearPixels( pixmap:TPixmap,argb=0 )

描述: 清除畫素圖

資訊: 將影像中所有畫素設定為 32 位畫素值。

32 位 argb 值包含以下分量

位 24-31 畫素 alpha
位 16-23 畫素 red
位 8-15 畫素 green
位 0-7 畫素 blue
華夏公益教科書