aardio 文档

gdi 库模块帮助文档

gdi 成员列表 #

gdi.ARGB #

合并 ARGB 分量并返回 ARGB 颜色数值

gdi.ARGB(红,绿,蓝,透明度) #

合并 ARGB 分量并返回 ARGB 颜色数值
表示 Alpha 值的 A 分量范围为 0~0xFF,0 为完全透明。

ARGB 颜色值一般用于 GDI+,plus 控件等
ARGB 值内存格式用字符串表示就是 '\xBB\xGG\xRR\xAA'。
用结构体表示就是 { BYTE b;BYTE g;BYTE r;BYTE a; }
数值的书写顺序是反过来的,所以写为 0xAARRGGBB 。

那么为什么叫 ARGB 颜色值,而不是 BGRA 颜色值呢?
一定要找个理由就是念着顺口,GDI+ 头文件就是这样命名,约定俗成就是规则。
纠结这个正反顺序,就好比纠结『东西』为什么不叫『西东』一样毫无意义

gdi.BITMAP() #

位图信息
!gdi_bitmap.bmType = 类型

gdi.RGB #

合并 RGB 分量并返回 RGB 颜色数值

gdi.RGB(红,绿,蓝) #

合并 RGB 分量并返回 RGB 颜色数值,
可选用参数 @4 指定 A 分量返回 RGBA 颜色数值。

RGB 颜色值一般用于GDI,传统控件。
RGB 颜色值存储格式用字符串表示为 '\xRR\xGG\xBB',
用结构体表示 { BYTE r;BYTE g;BYTE b; }
数值虽然也是低位存储在前(小端字节序),但书写数值时是高位在前,
所以RGB 颜色数值写为 0xBBGGRR,这不叫『写反了』。
纠结这个正反顺序,就好比纠结『东西』为什么不叫『西东』一样毫无意义

gdi.RGBQUAD(红,绿,蓝) #

创建 RGBQUAD 结构体

gdi.argbReverse(颜色数值) #

RGB 颜色数值转 ARGB 颜色数值,
RGB 分量中 R、B 的位置互换,并修改高位透明分量为 0xFF

gdi.blendFunction() #

返回对象:blendFunctionObject

gdi.blendFunction(透明度,透明选项) #

创建透明混合参数,
透明度为1到255,默认为255
透明选项默认为1

gdi.clientBuffer #

gdi.clientBuffer( hwnd,  
    function( hdc,hMemDc,hMemBitmap,width,height ){  
        /*窗口客户区双缓冲绘图,此函数不可返回任何值*/  
        ::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);  
    }  
)

gdi.colorParse("#FFFFFF") #

解析网页兼容的颜色代码
支持 #RGB,#RRGGBB,#RRGGBBAA 三种格式,#号可省略,
#RGB,#RRGGBB 返回 GDI 兼容的RGB值
#RRGGBBAA 返回 GDI+ 兼容的 ARGB 格式颜色值
失败返回null

gdi.colorStringify(颜色数值,是否ARGB格式) #

生成网页兼容的文本
如果是 ARGB 数值,返回 #RRGGBBAA 格式字符串
#RRGGBBAA 可用于 HTMLayout,Sciter,以及新版的 Chrome 也可以支持

gdi.doubleBuffer #

gdi.doubleBuffer( hdc,width,height,  
    function( hdc,hMemDc,hMemBitmap ){  
        /*双缓冲绘图,此函数不可返回任何值*/  
        ::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);  
    }  
)

gdi.drawBitmap #

九宫格贴图

gdi.drawBitmap(hdc,位图句柄,rect,t,r,b,l) #

在目标DC上绘图
t,r,b,l依次为上、右、下、左九宫格切图,
如果不指定r,t,b,l则显示原图不拉伸
r,t,b,l都为0则直接拉伸全图

gdi.drawLine(hdc,x1,y1,x2,y2,...) #

在hdc指定句柄的绘图设备上移动到x1,y1坐标,
开始画线到x2,y2指定的坐标点,
可选添加任意个坐标点参数继续向后画线

gdi.drawText(hdc,font,s,rect,format) #

输出文本
hdc参数指定绘图设备句柄,font参数指定LOGFONT字体对象,
rect应使用::RECT结构体指定输出区块,
format为可选参数使用_DT_前缀常量指定输出选项

gdi.drawTextCenter(hdc,font,s,rect,format) #

居中对齐输出文本,
hdc参数指定绘图设备句柄,font参数指定LOGFONT字体对象,
rect应使用::RECT结构体指定输出区块,
format为可选参数使用_DT_前缀常量指定输出选项

gdi.fillGradient(hdc,rect,clr,clr2,mode) #

使用clr,clr2指定的渐变颜色填充矩形
hdc参数指定绘图设备句柄
rect应使用::RECT结构体指定输出区块
mode为可选参数,默认为水平渐变,指定为1则为垂直方向渐变

gdi.fillRect(hdc,color,rect) #

使用color指定的颜色填充矩形
hdc参数指定绘图设备句柄
rect应使用::RECT结构体指定输出区块

如果不需要指定新的颜色,可改为调用::PatBlt即可
如果需要指定笔刷,调用::FillRect即可

gdi.getBitmapBits #

获取位图数据
返回值为cdata指针,以及数据读取长度
无数据返回空值

gdi.getBitmapBits(位图句柄,长度) #

成功返回读取内存,以及读取长度

gdi.getBitmapInfo() #

返回对象:gdiBitmapObject

gdi.getBitmapInfo(位图句柄) #

返回BITMAT结构体

gdi.getBitmapObject(hdc) #

返回当前设备位图对象

gdi.getDpi(hdc,hwnd) #

获取屏幕DPI,即每英寸像素点数,
参数可选

gdi.getDpiScale(hdc,hwnd) #

获取屏幕DPI缩放系数,
参数可选,
返回2个表示百分比的小数值,1表示100%,
第一个返回值为 x 轴缩放,第二个返回值为 y 轴缩放,
2个返回值通常都是一样的

gdi.getFont() #

返回对象:logfontObject

gdi.getFont(窗口句柄) #

返回窗口字体,LOGFONT对象
如果窗口仍然是使用系统字体,返回空值
不应使用此函数获取系统字体

gdi.getIconInfo #

获取图标信息

gdi.getIconInfo() #

返回对象:gdicoinfoObject

gdi.getIconInfo(句柄) #

参数不可为空

gdi.getPixel #

抓像素颜色

gdi.getPixel(x,y,hwnd) #

句柄为可选参数

gdi.getRgb(RGB颜色数值) #

此函数返回R(红),G(绿),B(蓝)三个分量。
函数名由 "get R,G,B " 组合而成,表示三个返回值的顺序。

参数 @1 指定 RGB 颜色数值。
RGB 颜色值一般用于GDI,传统控件。
RGB 颜色值存储格式用字符串表示为 '\xRR\xGG\xBB',
用结构体表示 { BYTE r;BYTE g;BYTE b; }
数值虽然也是低位存储在前(小端字节序),但书写数值时是高位在前,
所以RGB 颜色数值写为 0xBBGGRR,这不叫『写反了』。
纠结这个正反顺序,就好比纠结『东西』为什么不叫『西东』一样毫无意义

gdi.getRgba(ARGB颜色数值) #

返回R(红),G(绿),B(蓝),A(透明度) 4个分量
函数名由 "get R,G,B,A " 组合而成,表示四个返回值的顺序
表示 Alpha 值的 A 分量范围为 0~0xFF,0 为完全透明。

ARGB 颜色值一般用于 GDI+,plus 控件等
ARGB 值内存格式用字符串表示就是 '\xBB\xGG\xRR\xAA'。
用结构体表示就是 { BYTE b;BYTE g;BYTE r;BYTE a; }
数值的书写顺序是反过来的,所以写为 0xAARRGGBB 。

那么为什么叫 ARGB 颜色值,而不是 BGRA 颜色值呢?
一定要找个理由就是念着顺口,GDI+ 头文件就是这样命名,约定俗成就是规则。
纠结这个正反顺序,就好比纠结『东西』为什么不叫『西东』一样毫无意义

gdi.getSystemFont( _DEFAULT_GUI_FONT ) #

获取界面缺省字体并转换为LOGFONT

gdi.getSystemFont( _SYSTEM_FONT ) #

获取系统字体并转换为LOGFONT

gdi.getTextExtent(hdc,str) #

获取字符串输出后的宽度,高度,返回2个值
参数@1为目标DC,参数@2指定字符串

gdi.layeredBuffer #

gdi.layeredBuffer( winform.hwnd,    
    function( hdc,hMemDc,hMemBitmap,width,height,left,top,hwnd,blendFunction ){  

        /*在hMemDc上绘图即可*/  

        ..gdi.updateLayeredWindow( hwnd,hMemDc,::SIZE(width,height) ,blendFunction  );    
    }  
)

gdi.lineTo(hdc,x1,y1,...) #

开始画线到x1,y1指定的坐标点,
可选添加任意个坐标点参数继续向后画线

gdi.paint #

gdi.paint( hwnd,  
    function( hdc,width, height,rcPaint,fErase,paintStruct ){  
        /*此函数只能用于wndproc内部处理_WM_PAINT消息*/  
        ::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);  
    }   
);

gdi.paintBuffer #

gdi.paintBuffer( hwnd,  
    function( hdc,hMemDc,hMemBitmap,width,height,rcPaint,fErase,paintStruct ){  
        /*专用于_WM_PAINT消息内创建内存DC绘图  
此函数自动负责内存DC到DC设备间的双向BitBlt复制操作*/  
        ::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);  
    }   
);

gdi.rgbReverse(颜色数值) #

ARGB 颜色数值转 RGB 颜色数值,
RGB 分量中 R、B 的位置互换

gdi.roundRect(hdc,rect,cx,cy) #

输出圆角矩形
hdc参数指定绘图设备句柄
rect应使用::RECT结构体指定输出区块,cx,cy指定圆角大小

gdi.selectBrush(callback,hdc,bgolor,color,width,style) #

gdi.selectBrush(  
    function(hdc,pen,brush){  

        ::FillRect(hdc,::RECT(0,0,100,100),brush);  

        var font = ::LOGFONT(weight=800;color=0x000000);  
        gdi.textOut(hdc,font,"TEST",0,0);  

        /*在指定绘图设备hdc选择新的笔刷和画笔  
参数bgolor指定笔刷颜色,参数color指定画笔颜色,如果不指定color则不创建画笔,  
注意GDI使用RGB格式的颜色值,用16进制数值可写为0xBBGGRR格式,  
width为可选参数用于指定画笔宽度,style为可选参数用于指定画笔样式  
回调参数中brush为新的笔刷,如果指定了color参数则回调参数pen为新的画笔  
此函数在回调函数执行完以后负责销毁笔刷、画笔并复原绘图设备*/  
    },hdc,0xFFFFFF,0x000000)

gdi.selectPen(callback,hdc,color,width,style) #

gdi.selectPen(  
    function(hdc,pen){  

        gdi.drawLine(hdc,0,0,100,100)/*在指定绘图设备hdc选择新的画笔,参数color指定画笔颜色,  
注意GDI使用RGB格式的颜色值,用16进制数值可写为0xBBGGRR格式,  
width为可选参数用于指定画笔宽度,style为可选参数用于指定画笔样式  
回调参数中pen为新的画笔  
此函数在回调函数执行完以后负责销毁画笔并复原绘图设备*/  
    },hdc,0xFFFFFF,0x000000)

gdi.setFont #

设置窗口字体,返回字体句柄
直接调用此函数必须自行管理字体生命周期

gdi.setFont(窗口句柄,LOGFONT对象,窗口DPI缩放比例) #

第二个参数是字体句柄、或 LOGFONT 结构体,
使用 LOGFONT 对象作为参数将创建新的逻辑字体句柄,函数将返回该句柄。
参数 @3 仅在使用 point 单位时用于修正窗体口与系统 DPI 不一致的问题。

gdi.setPixel #

修改像素颜色

gdi.setPixel(x,y,color,hwnd) #

句柄为可选参数

gdi.textOut(hdc,font,str,x,y) #

输出文本
hdc参数指定绘图设备句柄,font参数指定LOGFONT字体对象,
可选参数x,y指定输出坐标

gdi.updateLayeredWindow #

更新分层窗口

gdi.updateLayeredWindow(hwnd,hdcSrc,size,blend,ptDst,ptSrc,hdcDst,crKey,flags) #

除参数1以外,所有参数可选
参数用法与同名API相同,请参考微软文档
注意参数顺序与API不同,请参考该函数源码

gdi.windowBuffer #

gdi.windowBuffer( hwnd,  
    function( hdc,hMemDc,hMemBitmap,width,height ){  
        /*窗口双缓冲绘图,此函数不可返回任何值*/  
        ::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);  
    }  
)

::LOGFONT 成员列表 #

::LOGFONT.is() #

检查参数@1是否 ::LOGFONT 结构体,返回布尔值

blendFunctionObject 成员列表 #

blendFunctionObject.alphaFormat #

默认为1,
即AC_SRC_ALPHA:使用图像自带透明通道

blendFunctionObject.blendFlags #

必须是0

blendFunctionObject.blendOp #

必须是0

blendFunctionObject.sourceConstantAlpha #

透明度值 1~255
如果要使用图像本身的透明值,设为255
默认值为255

gdi. this 成员列表 #

gdi. this.rgbRed #

r;

gdi.? 成员列表 #

gdi.*.getFont #

返回对象:logfontObject

gdi.this 成员列表 #

gdi.this.rgbBlue #

b;

gdi.this.rgbGreen #

g;

gdi.this.rgbReserved #

q;

gdiBitmapObject 成员列表 #

gdiBitmapObject.bmBits #

指向存储像素阵列的数组

gdiBitmapObject.bmBitsPixel #

调色板颜色位数

gdiBitmapObject.bmHeight #

高度

gdiBitmapObject.bmPlanes #

调色板颜色数

gdiBitmapObject.bmType #

类型

gdiBitmapObject.bmWidth #

宽度

gdiBitmapObject.bmWidthBytes #

每行光栅所占字节数,必须为偶数

gdicoinfoObject 成员列表 #

gdicoinfoObject.fIcon #

是否图标

gdicoinfoObject.hbmColor #

位图句柄

gdicoinfoObject.hbmMask #

掩码位图句柄

gdicoinfoObject.xHotspot #

热点坐标x

gdicoinfoObject.yHotspot #

热点坐标u

logfontObject 成员列表 #

logfontObject.bold #

是否为粗体

logfontObject.charset #

字符集代码,请参考标准库 gdi 中 _CHARSET 后缀常量

logfontObject.clip #

剪辑精度

logfontObject.color #

字体颜色

logfontObject.createIndirect #

创建可用于GDI设备的逻辑字体
并返回字体句柄

logfontObject.createIndirect(hdc,hwnd,own) #

创建可用于绘图设备的逻辑字体,并返回对象句柄
hdc,hwnd为可选参数用于转换point单位,默认为屏幕dc
参数@3指定是否由当前对象是否持有该字体句柄

logfontObject.deleteIndirect() #

删除createIndirect函数创建并管理生存期的字体
必须确认该字体确实不再被使用

logfontObject.detach() #

分离并返回字体句柄
并将对象的字体句柄置为空,
已分离的句柄必须自行管理生存期并负责释放

logfontObject.esc #

字符串相对页面底端角度

logfontObject.family #

字符间距和族

logfontObject.getPointSize(hdc,hwnd) #

返回点数大小
可选使用参数hdc指定绘图设备句柄,或使用hwnd指定获取hdc的窗口

logfontObject.h #

指定字符的高度,逻辑单位,
字体映射器会将此值转换为设备单位,
默认的 MM_TEXT 映射模式下,这个值也就是像素值

即使用此属性指定字体大小,
aardio 创建的窗口仍然可以默认支持自动DPI缩放

logfontObject.handle #

createIndirect 函数创建并管理生存期的字体句柄
不应直接读写此句柄

logfontObject.italic #

斜体

logfontObject.name #

字体名称

logfontObject.ori #

单个字符相对页面底端角度

logfontObject.out #

输出精度

logfontObject.point #

字体点数,
此为内部只写属性,
不应当使用直接此属性读写字体点数,
请改用 getPointSize, setPointSize 函数

logfontObject.quality #

输出质量

logfontObject.setPointSize(pt,hdc,hwnd) #

pt 参数指定字体点数,  
1点等于 1/72 英寸  
在不同DPI设置的显示器上,每英寸对应的点数与像素不相同,  
使用点数单位可在不同DPI设置的显示器上得到相同大小的字体,  
如果指定了@hdc 或 @hwnd 参数,则自动调用 stripPoint 函数并更新 h 属性指定的逻辑单位

logfontObject.strike #

添加删除线

logfontObject.stripPoint(hdc,hwnd) #

如果指定了字体点数,转换并更新 h 属性的逻辑单位,
可选使用参数 @hdc 指定绘图设备句柄,或使用 @hwnd 指定获取 @hdc 的窗口

logfontObject.underline #

添加下划线

logfontObject.w #

指定字符的宽度,逻辑单位,
一般不建议指定此参数

logfontObject.weight #

重量,0到1000
0为默认值,标准字体为400
粗体为700

全局常量

::AbortPath #

g.api("AbortPath","int(ptr hdc)");

::AngleArc #

g.api("AngleArc","int(ptr hdc,int x,int y,int dwRadius,float eStartAngle,float eSweepAngle)");

::Arc #

g.api("Arc","int(ptr hdc,int X1,int Y1,int X2,int Y2,int X3,int Y3,int X4,int Y4)");

::ArcTo #

g.api("ArcTo","int(ptr hdc,int X1,int Y1,int X2,int Y2,int X3,int Y3,int X4,int Y4)");

::BeginPaint #

u.api("BeginPaint","ptr(addr hwnd,struct &lpPaint)");

::BeginPath #

g.api("BeginPath","int(ptr hdc)");

::BitBlt #

g.api("BitBlt","int(ptr hDestDC,int x,int y,int cx,int cy,pointer hSrcDC,int xSrc,int ySrc,int dwRop)");

::CancelDC #

g.api("CancelDC","int(ptr hdc)");

::CreateBitmap #

g.api("CreateBitmap","ptr(int nWidth,int nHeight,INT nPlanes,INT nBitCount,pointer lpBits)");

::CreateCompatibleBitmap #

g.api("CreateCompatibleBitmap","ptr(ptr hdc,int nWidth,int nHeight)");

::CreateCompatibleDC #

g.api("CreateCompatibleDC","ptr(ptr hdc)");

::CreateDC #

g.api("CreateDC","ptr(str drive,str device,str output,struct initData)")

::CreateFont #

g.api("CreateFont","ptr(int H,int W,int E,int O,int W,bool I,bool u,int S,int C,int OP,int CP,int Q,int PAF,ustring F)");

::CreateFontIndirect #

g.api("CreateFontIndirect","ptr(struct lplf)" )

::CreateHatchBrush #

g.api("CreateHatchBrush","ptr(int nIndex,int color)");

::CreatePatternBrush #

g.api("CreatePatternBrush","ptr(ptr hbm)" )

::CreatePen #

g.api("CreatePen","ptr(int style,int width,int color)");

::CreateSolidBrush #

g.api("CreateSolidBrush","ptr(int crColor)");

::DRAWITEMSTRUCT #

class {
    INT CtlType;
    INT CtlID;
    INT itemID;
    INT itemAction;
    INT itemState;
    addr hwndItem;
    pointer hDC;
    struct rcItem = ::RECT();
    ptr itemData;
}

::DeleteDC #

g.api("DeleteDC","bool(PTR hdc)");

::DeleteObject #

g.api("DeleteObject","bool(PTR hObj)");

::DrawEdge #

u.api("DrawEdge","int(ptr hdc,struct qrc,int edge,int grfFlags)");

::DrawFocusRect #

u.api("DrawFocusRect","int(ptr hdc,struct lpRect)");

::DrawFrameControl #

u.api("DrawFrameControl","int(ptr hdc,struct rc,int un1,int un2)");

::DrawIconEx #

u.api("DrawIconEx","int(PTR hdc,int x,int y,pointer hIcon,int cx,int cy,int stepIfAni,pointer hbrFlickerFreeDraw,int flags )" );

::DrawText #

u.api("DrawText","int(ptr hdc,ustring lpStr,int nCount,struct& lpRect,int wFormat)");

::Ellipse #

g.api("Ellipse","int(ptr hdc,int X1,int Y1,int X2,int Y2)");

::EndPaint #

u.api("EndPaint","int(addr hwnd,struct lpPaint)");

::EndPath #

g.api("EndPath","int(ptr hdc)");

::FillPath #

g.api("FillPath","int(ptr hdc)");

::FillRect #

u.api("FillRect","int(ptr hdc,struct& lpRect,pointer hBrush)");

::FrameRect #

u.api("FrameRect","int(ptr hdc,struct& lpRect,pointer hBrush)");

::GRADIENT_RECT #

class {
    int UpperLeft;
    int LowerRight;
}

::GdiGradientFill #

g.api("GdiGradientFill","int(ptr hdc,struct pVertex,int nVertex,struct mesh,int count,int mode)");

::GetBitmapBits #

g.api("GetBitmapBits","int(ptr hbmp,int len,ptr bits)")

::GetBkColor #

g.api("GetBkColor","int(ptr hdc)");

::GetBkMode #

g.api("GetBkMode","int(ptr hdc)");

::GetCurrentObject #

g.api("GetCurrentObject","ptr(ptr hdc,int type)");

::GetDC #

u.api("GetDC","ptr(addr hwnd)");

::GetDCEx #

u.api("GetDCEx","ptr(addr hwnd,int hrgnClip,int flags)");

::GetDeviceCaps #

g.api("GetDeviceCaps","int(ptr hdc,int nIndex)");

::GetObject #

g.api("GetObject","int(ptr hObj,int nCount,struct& lpObject)");

::GetPixel #

g.api("GetPixel","int(ptr hdc,int x,int y)");

::GetStockObject #

g.api("GetStockObject","ptr(int i)" )

::GetStretchBltMode #

g.api("GetStretchBltMode","int(ptr hdc)");

::GetSysColor #

u.api("GetSysColor","int(int nIndex)");

::GetTextAlign #

g.api("GetTextAlign","int(PTR hdc)")

::GetTextColor #

g.api("GetTextColor","int(ptr hdc)");

::GetWindowDC #

u.api("GetWindowDC","ptr(addr hwnd)" )

::LOGFONT() #

创建字体[LOGFONT结构体]
可调用createIndirect生成字体句柄
gdi.textOut,gdi.drawText 等函数可以直接使用此对象作为参数
所有窗口及控件的setFont函数可使用此对象作为参数

返回对象:logfontObject

::LOGFONT(name="Tahoma";point=12 ) #

创建字体对象
参数表可以使用键值对指定LOGFONT结构体中的字段值,
参数也可以是另一个LOGFONT结构体,此时复制并创建新的结构体
point指定字体大小,以点数为单位

::LineTo #

g.api("LineTo","bool(ptr hdc,int x,int y)");

::MEASUREITEMSTRUCT #

class {
    INT CtlType;
    INT CtlID;
    INT itemID;
    INT itemWidth;
    INT itemHeight;
    ptr itemData;
}

::MoveToEx #

g.api("MoveToEx","bool(ptr hdc,int x,int y,struct& lpPoint)");

::PAINTSTRUCT #

class {
    pointer hdc;
    int fErase;
    struct rcPaint = ::RECT();
    int fRestore;
    int fIncUpdate;
    BYTE rgbReserved[32];
}

::PatBlt #

g.api("PatBlt","int(PTR hDc,int x,int y,int cx,int cy,INT rop)" )

::PrintWindow #

u.api("PrintWindow","int(addr hwnd,pointer hdcBlt,int nFlags)");

::ReleaseDC #

u.api("ReleaseDC","bool(addr hwnd,PTR hdc)");

::RoundRect #

g.api("RoundRect","int(ptr hdc,int l,int t,int r,int b,int cx,int cy)");

::SelectClipPath #

g.api("SelectClipPath","int(ptr hdc,int iMode)");

::SelectObject #

g.api("SelectObject","ptr(PTR hdc,ptr hObj)");

::SetBkColor #

g.api("SetBkColor","int(ptr hdc,int color)");

::SetBkMode #

g.api("SetBkMode","int(ptr hdc,int mode)");

::SetBrushOrgEx #

g.api("SetBrushOrgEx","int(ptr hdc,int xOrg,int yOrg,struct &pt)");

::SetPixel #

g.api("SetPixel","int(ptr hdc,int x,int y,int crColor)");

::SetStretchBltMode #

g.api("SetStretchBltMode","int(ptr hdc,int nStretchMode)");

::SetTextAlign #

g.api("SetTextAlign","int(PTR hdc,INT align)")

::SetTextColor #

g.api("SetTextColor","int(ptr hdc,int crColor)");

::StretchBlt #

g.api("StretchBlt","int(ptr hdc,int x,int y,int nWidth,int nHeight,pointer hSrcDC,int xSrc,int ySrc,int nSrcWidth,int nSrcHeight,int dwRop)");

::TRIVERTEX #

class {
    int x;
    int y;
    WORD Red;
    WORD Green;
    WORD Blue;
    WORD Alpha;
}

::TextOut #

g.api("TextOut","int(ptr hdc,int x,int y,ustring lpString,int nCount)");

::TransparentBlt #

g.api("GdiTransparentBlt","int(ptr hdcDest,int xoriginDest,int yoriginDest,int wDest,int hDest,pointer hdcSrc,int xoriginSrc,int yoriginSrc,int wSrc,int hSrc,INT crTransparent)");

自动完成常量

_ANSI_CHARSET=0
_ARABIC_CHARSET=0xB2
_BALTIC_CHARSET=0xBA
_BLACKNESS=0x42
_CHINESEBIG5_CHARSET=0x88
_CLR_DEFAULT=0xFF000000
_CLR_NONE=-1
_DEFAULT_CHARSET=1
_DSTINVERT=0x550009
_EASTEUROPE_CHARSET=0xEE
_GB2312_CHARSET=0x86
_GREEK_CHARSET=0xA1
_HANGEUL_CHARSET=0x81
_HANGUL_CHARSET=0x81
_HEBREW_CHARSET=0xB1
_JOHAB_CHARSET=0x82
_MAC_CHARSET=0x4D
_MERGECOPY=0xC000CA
_MERGEPAINT=0xBB0226
_NOTSRCCOPY=0x330008
_NOTSRCERASE=0x1100A6
_OEM_CHARSET=0xFF
_PATCOPY=0xF00021
_PATINVERT=0x5A0049
_PATPAINT=0xFB0A09
_RUSSIAN_CHARSET=0xCC
_SHIFTJIS_CHARSET=0x80
_SRCAND=0x8800C6
_SRCCOPY=0xCC0020
_SRCERASE=0x440328
_SRCINVERT=0x660046
_SRCPAINT=0xEE0086
_STRETCH_ANDSCANS=0x1
_STRETCH_DELETESCANS=0x3
_STRETCH_HALFTONE=0x4
_STRETCH_ORSCANS=0x2
_SYMBOL_CHARSET=2
_THAI_CHARSET=0xDE
_TURKISH_CHARSET=0xA2
_ULW_ALPHA=0x2
_ULW_COLORKEY=0x1
_ULW_OPAQUE=0x4
_VIETNAMESE_CHARSET=0xA3
_WHITENESS=0xFF0062

Markdown 格式