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)");
```

<a id="::AngleArc"></a>
### ::AngleArc 
 ```aardio
g.api("AngleArc","int(ptr hdc,int x,int y,int dwRadius,float eStartAngle,float eSweepAngle)");
```

<a id="::Arc"></a>
### ::Arc 
 ```aardio
g.api("Arc","int(ptr hdc,int X1,int Y1,int X2,int Y2,int X3,int Y3,int X4,int Y4)");
```

<a id="::ArcTo"></a>
### ::ArcTo 
 ```aardio
g.api("ArcTo","int(ptr hdc,int X1,int Y1,int X2,int Y2,int X3,int Y3,int X4,int Y4)");
```

<a id="::BeginPaint"></a>
### ::BeginPaint 
 ```aardio
u.api("BeginPaint","ptr(addr hwnd,struct &lpPaint)");
```

<a id="::BeginPath"></a>
### ::BeginPath 
 ```aardio
g.api("BeginPath","int(ptr hdc)");
```

<a id="::BitBlt"></a>
### ::BitBlt 
 ```aardio
g.api("BitBlt","int(ptr hDestDC,int x,int y,int cx,int cy,pointer hSrcDC,int xSrc,int ySrc,int dwRop)");
```

<a id="::CancelDC"></a>
### ::CancelDC 
 ```aardio
g.api("CancelDC","int(ptr hdc)");
```

<a id="::CreateBitmap"></a>
### ::CreateBitmap 
 ```aardio
g.api("CreateBitmap","ptr(int nWidth,int nHeight,INT nPlanes,INT nBitCount,pointer lpBits)");
```

<a id="::CreateCompatibleBitmap"></a>
### ::CreateCompatibleBitmap 
 ```aardio
g.api("CreateCompatibleBitmap","ptr(ptr hdc,int nWidth,int nHeight)");
```

<a id="::CreateCompatibleDC"></a>
### ::CreateCompatibleDC 
 ```aardio
g.api("CreateCompatibleDC","ptr(ptr hdc)");
```

<a id="::CreateDC"></a>
### ::CreateDC 
 ```aardio
g.api("CreateDC","ptr(str drive,str device,str output,struct initData)")
```

<a id="::CreateFont"></a>
### ::CreateFont 
 ```aardio
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)");
```

<a id="::CreateFontIndirect"></a>
### ::CreateFontIndirect 
 ```aardio
g.api("CreateFontIndirect","ptr(struct lplf)" )
```

<a id="::CreateHatchBrush"></a>
### ::CreateHatchBrush 
 ```aardio
g.api("CreateHatchBrush","ptr(int nIndex,int color)");
```

<a id="::CreatePatternBrush"></a>
### ::CreatePatternBrush 
 ```aardio
g.api("CreatePatternBrush","ptr(ptr hbm)" )
```

<a id="::CreatePen"></a>
### ::CreatePen 
 ```aardio
g.api("CreatePen","ptr(int style,int width,int color)");
```

<a id="::CreateSolidBrush"></a>
### ::CreateSolidBrush 
 ```aardio
g.api("CreateSolidBrush","ptr(int crColor)");
```

<a id="::DRAWITEMSTRUCT"></a>
### ::DRAWITEMSTRUCT 
 ```aardio
class {
    INT CtlType;
    INT CtlID;
    INT itemID;
    INT itemAction;
    INT itemState;
    addr hwndItem;
    pointer hDC;
    struct rcItem = ::RECT();
    ptr itemData;
}
```

<a id="::DeleteDC"></a>
### ::DeleteDC 
 ```aardio
g.api("DeleteDC","bool(PTR hdc)");
```

<a id="::DeleteObject"></a>
### ::DeleteObject 
 ```aardio
g.api("DeleteObject","bool(PTR hObj)");
```

<a id="::DrawEdge"></a>
### ::DrawEdge 
 ```aardio
u.api("DrawEdge","int(ptr hdc,struct qrc,int edge,int grfFlags)");
```

<a id="::DrawFocusRect"></a>
### ::DrawFocusRect 
 ```aardio
u.api("DrawFocusRect","int(ptr hdc,struct lpRect)");
```

<a id="::DrawFrameControl"></a>
### ::DrawFrameControl 
 ```aardio
u.api("DrawFrameControl","int(ptr hdc,struct rc,int un1,int un2)");
```

<a id="::DrawIconEx"></a>
### ::DrawIconEx 
 ```aardio
u.api("DrawIconEx","int(PTR hdc,int x,int y,pointer hIcon,int cx,int cy,int stepIfAni,pointer hbrFlickerFreeDraw,int flags )" );
```

<a id="::DrawText"></a>
### ::DrawText 
 ```aardio
u.api("DrawText","int(ptr hdc,ustring lpStr,int nCount,struct& lpRect,int wFormat)");
```

<a id="::Ellipse"></a>
### ::Ellipse 
 ```aardio
g.api("Ellipse","int(ptr hdc,int X1,int Y1,int X2,int Y2)");
```

<a id="::EndPaint"></a>
### ::EndPaint 
 ```aardio
u.api("EndPaint","int(addr hwnd,struct lpPaint)");
```

<a id="::EndPath"></a>
### ::EndPath 
 ```aardio
g.api("EndPath","int(ptr hdc)");
```

<a id="::FillPath"></a>
### ::FillPath 
 ```aardio
g.api("FillPath","int(ptr hdc)");
```

<a id="::FillRect"></a>
### ::FillRect 
 ```aardio
u.api("FillRect","int(ptr hdc,struct& lpRect,pointer hBrush)");
```

<a id="::FrameRect"></a>
### ::FrameRect 
 ```aardio
u.api("FrameRect","int(ptr hdc,struct& lpRect,pointer hBrush)");
```

<a id="::GRADIENT_RECT"></a>
### ::GRADIENT_RECT 
 ```aardio
class {
    int UpperLeft;
    int LowerRight;
}
```

<a id="::GdiGradientFill"></a>
### ::GdiGradientFill 
 ```aardio
g.api("GdiGradientFill","int(ptr hdc,struct pVertex,int nVertex,struct mesh,int count,int mode)");
```

<a id="::GetBitmapBits"></a>
### ::GetBitmapBits 
 ```aardio
g.api("GetBitmapBits","int(ptr hbmp,int len,ptr bits)")
```

<a id="::GetBkColor"></a>
### ::GetBkColor 
 ```aardio
g.api("GetBkColor","int(ptr hdc)");
```

<a id="::GetBkMode"></a>
### ::GetBkMode 
 ```aardio
g.api("GetBkMode","int(ptr hdc)");
```

<a id="::GetCurrentObject"></a>
### ::GetCurrentObject 
 ```aardio
g.api("GetCurrentObject","ptr(ptr hdc,int type)");
```

<a id="::GetDC"></a>
### ::GetDC 
 ```aardio
u.api("GetDC","ptr(addr hwnd)");
```

<a id="::GetDCEx"></a>
### ::GetDCEx 
 ```aardio
u.api("GetDCEx","ptr(addr hwnd,int hrgnClip,int flags)");
```

<a id="::GetDeviceCaps"></a>
### ::GetDeviceCaps 
 ```aardio
g.api("GetDeviceCaps","int(ptr hdc,int nIndex)");
```

<a id="::GetObject"></a>
### ::GetObject 
 ```aardio
g.api("GetObject","int(ptr hObj,int nCount,struct& lpObject)");
```

<a id="::GetPixel"></a>
### ::GetPixel 
 ```aardio
g.api("GetPixel","int(ptr hdc,int x,int y)");
```

<a id="::GetStockObject"></a>
### ::GetStockObject 
 ```aardio
g.api("GetStockObject","ptr(int i)" )
```

<a id="::GetStretchBltMode"></a>
### ::GetStretchBltMode 
 ```aardio
g.api("GetStretchBltMode","int(ptr hdc)");
```

<a id="::GetSysColor"></a>
### ::GetSysColor 
 ```aardio
u.api("GetSysColor","int(int nIndex)");
```

<a id="::GetTextAlign"></a>
### ::GetTextAlign 
 ```aardio
g.api("GetTextAlign","int(PTR hdc)")
```

<a id="::GetTextColor"></a>
### ::GetTextColor 
 ```aardio
g.api("GetTextColor","int(ptr hdc)");
```

<a id="::GetWindowDC"></a>
### ::GetWindowDC 
 ```aardio
u.api("GetWindowDC","ptr(addr hwnd)" )
```

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

[返回对象:logfontObject](#logfontObject)

<a id="::LOGFONT(name="Tahoma";point=12 )"></a>
### ::LOGFONT(name="Tahoma";point=12 ) 
 创建字体对象  
参数表可以使用键值对指定LOGFONT结构体中的字段值,  
参数也可以是另一个LOGFONT结构体,此时复制并创建新的结构体  
point指定字体大小,以点数为单位

<a id="::LineTo"></a>
### ::LineTo 
 ```aardio
g.api("LineTo","bool(ptr hdc,int x,int y)");
```

<a id="::MEASUREITEMSTRUCT"></a>
### ::MEASUREITEMSTRUCT 
 ```aardio
class {
    INT CtlType;
    INT CtlID;
    INT itemID;
    INT itemWidth;
    INT itemHeight;
    ptr itemData;
}
```

<a id="::MoveToEx"></a>
### ::MoveToEx 
 ```aardio
g.api("MoveToEx","bool(ptr hdc,int x,int y,struct& lpPoint)");
```

<a id="::PAINTSTRUCT"></a>
### ::PAINTSTRUCT 
 ```aardio
class {
    pointer hdc;
    int fErase;
    struct rcPaint = ::RECT();
    int fRestore;
    int fIncUpdate;
    BYTE rgbReserved[32];
}
```

<a id="::PatBlt"></a>
### ::PatBlt 
 ```aardio
g.api("PatBlt","int(PTR hDc,int x,int y,int cx,int cy,INT rop)" )
```

<a id="::PrintWindow"></a>
### ::PrintWindow 
 ```aardio
u.api("PrintWindow","int(addr hwnd,pointer hdcBlt,int nFlags)");
```

<a id="::ReleaseDC"></a>
### ::ReleaseDC 
 ```aardio
u.api("ReleaseDC","bool(addr hwnd,PTR hdc)");
```

<a id="::RoundRect"></a>
### ::RoundRect 
 ```aardio
g.api("RoundRect","int(ptr hdc,int l,int t,int r,int b,int cx,int cy)");
```

<a id="::SelectClipPath"></a>
### ::SelectClipPath 
 ```aardio
g.api("SelectClipPath","int(ptr hdc,int iMode)");
```

<a id="::SelectObject"></a>
### ::SelectObject 
 ```aardio
g.api("SelectObject","ptr(PTR hdc,ptr hObj)");
```

<a id="::SetBkColor"></a>
### ::SetBkColor 
 ```aardio
g.api("SetBkColor","int(ptr hdc,int color)");
```

<a id="::SetBkMode"></a>
### ::SetBkMode 
 ```aardio
g.api("SetBkMode","int(ptr hdc,int mode)");
```

<a id="::SetBrushOrgEx"></a>
### ::SetBrushOrgEx 
 ```aardio
g.api("SetBrushOrgEx","int(ptr hdc,int xOrg,int yOrg,struct &pt)");
```

<a id="::SetPixel"></a>
### ::SetPixel 
 ```aardio
g.api("SetPixel","int(ptr hdc,int x,int y,int crColor)");
```

<a id="::SetStretchBltMode"></a>
### ::SetStretchBltMode 
 ```aardio
g.api("SetStretchBltMode","int(ptr hdc,int nStretchMode)");
```

<a id="::SetTextAlign"></a>
### ::SetTextAlign 
 ```aardio
g.api("SetTextAlign","int(PTR hdc,INT align)")
```

<a id="::SetTextColor"></a>
### ::SetTextColor 
 ```aardio
g.api("SetTextColor","int(ptr hdc,int crColor)");
```

<a id="::StretchBlt"></a>
### ::StretchBlt 
 ```aardio
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)");
```

<a id="::TRIVERTEX"></a>
### ::TRIVERTEX 
 ```aardio
class {
    int x;
    int y;
    WORD Red;
    WORD Green;
    WORD Blue;
    WORD Alpha;
}
```

<a id="::TextOut"></a>
### ::TextOut 
 ```aardio
g.api("TextOut","int(ptr hdc,int x,int y,ustring lpString,int nCount)");
```

<a id="::TransparentBlt"></a>
### ::TransparentBlt 
 ```aardio
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 格式](_.html.md)