$.api("GdipBitmapGetPixel","int(POINTER Bitmap,int x,int y,INT& color)")
$.api("GdipBitmapLockBits","int(POINTER Bitmap,struct rect,int flags,int pixelFormat,struct& lockedBitmapData)")
$.api("GdipBitmapSetPixel","int(POINTER Bitmap,int x,int y,INT color)")
$.api("GdipBitmapSetResolution","int(POINTER Bitmap,float xdpi,float ydpi)")
$.api("GdipBitmapUnlockBits","int(POINTER Bitmap,struct lockedBitmapData)")
$.api("GdipCloneBitmapArea","int(float x,float y,float cx,float cy,int pixFormat,ptr bmp,ptr& bmp2)")
$.api("GdipCreateBitmapFromFile","int(string FileName,pointer& Bitmap)")
$.api("GdipCreateBitmapFromGraphics","int(int width,int height,pointer Graphics,pointer& Bitmap)")
$.api("GdipCreateBitmapFromHBITMAP","int(POINTER hbm,int hpal,pointer& Bitmap)")
$.api("GdipCreateBitmapFromHICON","int(POINTER hicon,pointer& Bitmap)")
$.api("GdipCreateBitmapFromScan0","int(int width,int height,int stride,int pixelFormat,pointer scan0,pointer& Bitmap)")
$.api("GdipCreateBitmapFromStream","int(POINTER stream,pointer& Bitmap)")
$.api("GdipCreateHBITMAPFromBitmap","int(POINTER Bitmap,pointer& hbmReturn,int background)")
从参数 @graphics 指定的 gdip.graphics 对象创建 GDI+ 位图副本。
对位图的修改不会影响原来的graphics对象
参数(graphics对象,宽度,高度)
从参数 @hBitmap 指定的位图句柄创建 gdip.bitmap 对象。
不会销毁传入的位图,须自行释放
从参数 @hIcon 指定的图标句柄创建 gdip.bitmap 对象。
不会销毁传入的位图,须自行释放
从参数 @imageOrBitmap 指定的 gdip.image 或 gdip.bitmap 对象创建新的 GDI+ 位图对象
自参数 @pathOrData 指定的图像路径或数据(string/buffer/string.builder)创建 GDI+ 位图对象。
如果事先导入标准库 inet.http,这里也可以直接传入图像网址。
从参数 @picture 指定的 com.pictrue 对象创建 GDI+ 位图对象
创建指定大小空位图。
参数 @width,@height 指定宽高。
自内存指针创建指定大小位图。
gdip.bitmap 对象会重用而不是复制 scan0 指向的内存。
如果 scan0 是字符串或 buffer 则可以安全地使用原始位图以避免复制操作。
这是因为当前位图会保持对 scan0 的引用以避免内存被提前释放。
但如果 scan0 是指针类型则调用者必须保证使用此位图时 scan0 指向的内存有效,
或者调用返回对象的 copy 方法复制位图并丢弃引用 scan0 的位图。
从句柄创建位图对象
创建并返回图像,如果不是动画则缓存该位图
缓存名为可选参数,默认以路径为缓存名
如果参数@1是图像数据则可以使用参数@2指定缓存名,
返回位图对象,
如果缓存键名明确指定为false,
则不使用缓存直接创建并返回位图
位图对象。
gdip.bitmap 对象允许跨线程调用(转发到创建对象的线程执行,必须有消息循环),
跨线程传输的 gdip.bitmap 代理对象不能作为绘图函数的参数使用
创建位图对象。
参数类型错误或失败返回 null ,以及错误信息
参数 @1 是否 gdip.bitmap 对象
仅调用 gdip.bitmap 的 lockData,lockData32 方法时此字段有效
锁定图像内存时指定的 flags 参数值,不要修改
字节数组( table 类型纯数组 )。
32 位 RGB 格式每个像素的字节顺序为 Blue,Green,Red,Alpha 。
24 位 RGB 每像数字节顺序为 Blue,Green,Red
像素数组( table 类型纯数组 ),数组元素的值为无符号 32 位整数。
使用 lockData32 获取 32 位图数据时才有这个字段。
像素行数组
高度
像素格式,
使用 _GdipPixelFormat 前缀的常量表示
原生类型为指针。
存储数据为缓冲区( buffer )。
每行字节宽度,一般指像素所占字节数乘以图像宽度。
该宽度总是对齐为4字节的整数倍,可能比像素所占的字节宽度大。
该值如果为负数表示 scan0 指向最后一行
宽度
class {
int width;
int height;
int stride;
int pixelFormat;
pointer scan0;
int reserved;
@_meta;
}
{
_get = function(k){
if(type(k)==="string") return owner[[ ..string.replace(k,"^[A-Z]",..string.lower) ]];
}
}
当前帧索引
修改该属性请使用SelectActiveFrame函数
克隆位图。
此函数内部可能使用了浅拷贝、写时拷贝技术,
尤其是在大小、像素格式参数都与原位图相同时会执行浅拷贝操作。
使用 scan0 指针创建的位图必须改用安全的 deepClone 或 copy 方法。
x,y指定复制区域起始坐标
cx,cy指定复制区域大小,所有参数可选,默认复制全图
像素格式默认为_GdipPixelFormat32bppARGB
复制位图。
可选在参数中指定 gdip.imageAttributes 对象用于控制显示属性
创建并返回 HICON 图标句柄。
调用者负责释放返回的位图句柄。
创建并返回 HBITMAP 位图句柄。
可选指定宽度、高度参数。
调用者负责释放返回的位图句柄。
如果图像是一个动画,创建定时器执行动画
注意每个图像同时只能在一个窗口上创建动画
创建动画前自动删除之前创建的动画定时器
如果图像不是动画,此函数不执行任何操作
成功返回定时器ID
在窗口上创建定时器,
每帧动画触发回调函数,
回调函数owner参数被设为参数@1指定的窗口对象
如果不指定控件,则默认指定为上次创建动画的控件,
如果不指定回调函数,则默认指定为控件的redrawTransparent函数
以深拷贝方式克隆位图。
可安全地用于使用 scan0 指针创建的位图。
如果要指定拷贝的区域请改用 copy 方法。
此函数内部可能使用了浅拷贝、写时拷贝技术,
尤其是在大小、像素格式参数都与原位图相同时会执行浅拷贝操作。
使用 scan0 指针创建的位图必须改用安全的 deepClone 或 Copy 方法。
释放图像。
此对象支持自动释放,不必手工调用此函数。
此函数具有幂等性,重复调用无副作用
如果图像支持动画,则返回一个帧迭代器。
否则此函数返回 null。
遍历动画帧。
每次调用帧迭代器切换到下一帧并返回当前帧所需延时,帧索引。
动画完成迭代器返回 null 。
可选用 @loopCount 参数指定循环所有帧的次数,0 为无限循环。
不指定参数则获取图像默认循环次数。
示例:
for delay,frame in bmp.eachFrame(1) {
bmp.save("/"+frame+".gif");
}
for( id,propertyItem in gdipbitmapObject.eachProperty() ){
propertyItem.
}
使用九宫格绘图创建新的位图对象,
九宫格切图后边角四格固定,中间五格拉伸。
使用此函数需要先导入 gdip.graphics。
所有参数为数值,不可省略
返回新的位图对象
当前分辨率GUID
返回多帧图像每帧延时数值组成的数组,
延时单位为厘秒,即0.01秒
图像帧分辨率列表
该值是GUID数组
从图像获取画板(gdip.graphics 对象)。
需要导入 gdip.graphics 。
动画循环次数
0为一直循环
读取位图指定 x,y 坐标的 ARGB 颜色值(0xAARRGGBB 格式无符号 32 位整数)
返回像素格式
返回所有属性ID数组
返回字段
返回分辨率xdpi,ydpi
获取缩略图,返回 gdip.bitmap 对象。
此函数依赖 gdip.graphics 库(plus 控件已自动导入)。
参数宽度,高度指定新的像素大小,也可以用小于 1 大于 0 的小数指定缩放百分比。
不指定高度或为 null 值时则参数 @1 同时指定宽高。
仅返回 gdip.image 对象的 getThumbnailImage 速度更快且不依赖 gdip.graphics。
获取缩略图,返回 gdip.image 对象。
参数宽度,高度指定新的像素大小,也可以用小于 1 大于 0 的小数指定缩放百分比。
不指定高度或为 null 值时则参数 @1 同时指定宽高。
将图像缩到很小(例如 0.02)后放大可实现模糊效果(blur effect)。
plus 控件的 expand,scale,stretch 等图像模式支持自动放大
高度
该对象已被缓存
是否正在播放动画
图像是否有效
delete 函数释放以后返回false
锁定图像内存。
返回 gdip.BitmapData 结构体
与 lockMemory 不同的是使用 bits 数组存储图像数据
所有参数可选,
默认使用图像的像素格式。
@rect 参数可用 ::RECT 结构体指定区块位置
解定图像内存并返回 32 位像素格式数据。
成功则返回对象的 bits.rows[].pixels[] 字段包含像素数组
所有参数可选,
0x26200A/*_PixelFormat32bppARGB*/。_GdipImageLockModeRead | _GdipImageLockModeWrite锁定图像内存
返回gdip.BitmapData 结构体
所有参数可选,
默认使用图像的像素格式。
@rect 参数可用 ::RECT 结构体指定区块位置。
可选参数 @flags 默认为 _GdipImageLockModeRead | _GdipImageLockModeWrite
原始高度,
对于一个 gdip.bitmap 对象会一直缓存第一次读取的值
原始宽度,
对于一个 gdip.bitmap 对象会一直缓存第一次读取的值
移除字段
缩放位图返回新的图象。
此函数依赖 gdip.graphics 库(plus 控件已自动导入)。
缩小图像,再放大输出,
并将 graphics 或 plus 控件的 interpolationMode 属性
设为 5/*_InterpolationModeNearestNeighbor*/ 可实现马赛克(pixelate)效果。
除宽,高以外,其他所有参数为可选参数。
缩放模式支持 scale,auto,expand,stretch,center,tile,repeat-x,repeat-y
模式默认为 scale,关于模式请参考 plus 控件背景模式说明,
auto 模式指图像超过绘图区则居中,否则缩放。
此函数不检查参数正确性,调用者有责任保证参数正确
可选使用参数@8指定 gdip.imageAttributes 对象设置显示属性
tile,repeat-x,repeat-y 三种模式忽略显示属性。
函数返回位图对象。
翻转图片
保存图像。
成功返回 true,失败返回 null,错误信息。
使用参数指定的文件路径或加载图片时的路径
根据后缀名自动设定格式,
可选在参数@3使用gdip.encoder.parameter数组指定保存参数
保存图像。
成功返回 true,失败返回 null,错误信息。
使用参数指定的文件路径或加载图片时的路径
根据后缀名自动设定格式
jpg文件可使用第二个参数指定图像质量,
可选在参数@3使用 gdip.encoder.parameter 数组指定保存参数
添加当前图像到多帧图像
添加其他 gdip.image 或 gdip.bitmap 对象到多帧图像,
可选使用参数2指定saveFlag,可选在参数@3使用gdip.encoder.parameter数组指定保存参数
创建多帧图像,参数指定保存路径,
使用saveAdd添加帧,添加帧参数@1不能指定路径,
添加所有帧以后调用saveFlush函数即可
保存图像到 buffer,返回 buffer,
后缀名默认为"*.jpg",质量默认为100,
可选在参数@3使用gdip.encoder.parameter数组指定保存参数
保存图像到 ico 文件。
使用此函数必须先导入 gdip.graphics 。
此函数生成的是包含 png 格式的单图标,
改用 gdip.icoBuilder 可生成多分辨率复合图标(仅 256x256 使用 PNG 格式)
保存到 ico 文件。
size 指定图标大小
参数 @2 如指定路径则保存到文件,成功返回 true。
不指定参数则返回包含 ico 数据的 buffer。
其他可选参数传给 resize 函数,mode 默认为 scale,也就是保持比例缩放。
保存到内存流对象
该函数成功返回值为流对象
流对象请使用 fsys.stream 创建
后缀名默认为"*.jpg",质量默认为100,
可选在参数@4使用gdip.encoder.parameter数组指定保存参数
设置当前动画帧
修改多帧图像每帧延时数值
参数必须是由数值组成的非空数组,
延时单位为厘秒,即0.01秒
必须在调用saveAdd以前设置
设定位图指定 x,y 坐标的 ARGB 颜色值
修改字段
设置分辨率
注意只能用来设置新建位图
将图片按指定的行数列数平均拆分为小图片
gdipbitmapObject.split().map(
default = 1;
hover = 2;
active = 3;/*返回一个新表
键保持与参数相同,值自动设置为指定位置的图像*/
)
将图片按指定的行数列数平均拆分为小图片
可选指定小图片的上、右、下、左边距
返回一维数组
如果此图像已运行动画,则停止动画
动画帧总数
不是动画返回1
解锁图像内存
参数必须是 lockData,lockData32 函数锁定返回的 gdip.BitmapData 结构体
解锁图像内存
参数必须是lockMemory函数锁定返回的gdip.BitmapData结构体
宽度