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 |