BlitzMax/模組/圖形/畫素圖
畫素圖提供矩形畫素區域的儲存。
你可以使用 CreatePixmap 命令建立一個新的畫素圖,或者使用 LoadPixmap 載入一個畫素圖。
畫素圖有 5 個屬性:寬度、高度、指向畫素影像素的位元組指標、間距和格式。
你可以使用 PixmapPixelPtr 命令檢索指向畫素影像素的指標。
畫素圖的間距是指畫素圖中一行畫素與下一行畫素之間的位元組數。要檢索畫素圖的間距,請使用 PixmapPitch 命令。
畫素圖的畫素格式決定畫素圖中的畫素如何在記憶體中儲存。如果你想透過畫素圖的畫素指標直接訪問畫素,則必須考慮這一點。你可以使用 PixmapFormat 命令檢索畫素圖的格式,並使用 ConvertPixmap 將畫素圖從一種格式轉換為另一種格式。
你還可以使用 ResizePixmap 調整畫素圖的大小,並使用 XFlipPixmap 和 YFlipPixmap 水平或垂直翻轉畫素圖。
畫素圖型別
- pixels
- width
- height
- pitch
- format
- capacity
- PixelPtr
- Window
- Copy
- Paste
- Convert
- ReadPixel
- WritePixel
- ClearPixels
- Create
- CreateStatic
欄位 pixels:Byte Ptr
描述: 指向畫素影像素的位元組指標
欄位 width
描述: 畫素圖的寬度(以畫素為單位)
欄位 height
描述: 畫素圖的高度(以畫素為單位)
欄位 pitch
描述: 畫素圖的間距(以位元組為單位)
欄位 format
描述: 畫素圖的畫素格式
欄位 capacity
描述: 畫素圖的容量(以位元組為單位),對於靜態畫素圖,值為 -1
方法 PixelPtr:Byte Ptr( x,y )
描述: 獲取畫素的記憶體地址
返回: 指向座標為 x, y 的畫素的位元組指標
方法 Window:TPixmap( x,y,width,height )
描述: 在畫素圖中建立一個虛擬視窗
返回: 一個引用指定矩形的靜態畫素圖。
方法 Copy:TPixmap()
描述: 複製畫素圖
返回: 一個新的 TPixmap 物件。
方法 Paste( source:TPixmap,x,y )
描述: 貼上畫素圖
方法 Convert:TPixmap( format )
描述: 轉換畫素圖
返回: 一個以指定格式建立的新 TPixmap 物件
方法 ReadPixel( x,y )
描述: 從畫素圖中讀取畫素
返回: 指定座標的畫素,打包成整數
方法 WritePixel( x,y,argb )
描述: 將畫素寫入畫素圖
方法 ClearPixels( argb )
描述: 清除畫素圖
函式 Create:TPixmap( width,height,format,align=4 )
描述: 建立畫素圖
返回: 一個新的 TPixmap 物件
函式 CreateStatic:TPixmap( pixels:Byte Ptr,width,height,pitch,format )
描述: 建立靜態畫素圖
返回: 一個新的 TPixmap 物件
畫素圖載入器的抽象基型別
要建立一個新的畫素圖載入器,你應該擴充套件 TPixmapLoader 並實現 LoadPixmap 方法。
要安裝你的畫素圖載入器,只需使用 New 建立一個例項。
- LoadPixmap
方法 LoadPixmap:TPixmap( stream:TStream )
描述: 載入畫素圖
資訊: 此方法必須透過擴充套件型別來實現。
函式 CreatePixmap:TPixmap( width,height,format,align_bytes=4 )
描述: 建立畫素圖
返回: 一個指定 width 和 height 的新畫素圖物件
資訊: 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:TPixmap( pixels:Byte Ptr,width,height,pitch,format )
描述: 使用現有畫素資料建立畫素圖
返回: 一個引用現有記憶體塊的新畫素圖物件
資訊: 當畫素圖被刪除時,靜態畫素圖引用的記憶體不會被釋放。
參見 CreatePixmap 以瞭解有效的畫素圖格式。
函式 CopyPixmap:TPixmap( pixmap:TPixmap )
描述: 複製畫素圖
返回: 一個新的畫素圖物件
函式 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 )
描述: 建立影像視窗
返回: 一個新的畫素圖物件
資訊: PixmapWindow 在 pixmap 中建立一個“虛擬”視窗。
MaskPixmap
[edit | edit source]函式 MaskPixmap:TPixmap( pixmap:TPixmap,mask_red,mask_green,mask_blue )
描述: 對影像進行遮罩
返回: 一個新的畫素圖物件
資訊: MaskPixmap 會建立一個新的影像,其中在原始 pixmap 中畫素顏色與 mask_red、mask_green 和 mask_blue 相匹配的地方,其 alpha 分量設定為“0”。mask_red、mask_green 和 mask_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 )
描述: 調整影像大小
返回: 一個指定 width 和 height 的新畫素圖物件
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 |