跳转至内容

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
华夏公益教科书