场景 API

场景代表一个图形区域,进行的绘图将反映到对应的窗口上。

函数 意义
GetDC(handle) 返回窗口客户区场景,handle 为零返回屏幕场景
ReleaseDC(handle,dc) 释放场景
FillRect(dc,rect,brush) 用指定的刷子填充矩形
WindowFromDC(dc) 返回场景对应的窗口句柄
SetPixel(dc,x,y,color) 设置一个点的颜色,失败返回 -1
GetPixel(dc,x,y) 返回一个点的颜色,失败返回 CLR_INVALID
LineTo(dc,x,y) 从当前位置画直线到某点,成功返回 true
MoveToEx(dc,x,y,Point) 设置当前位置,lpPoint 保存原位置
PolyLine(dc, Points, n) 画连续相接的直线
PolyLineTo(dc, Points, n) 接当前位置画连续相接的直线
PolyPolyLine(...) 画多条 PolyLine
Arc(...) 画圆弧,成功返回 true
ArcTo(...) 画圆弧,同 Arc
PolyBezier(...) 画贝赛尔样条曲线
PolyDraw

同时画出一系列的直线和贝赛尔样条

Rectangle(dc,left,top,right,bottom) 画矩形并填充
Ellipse(dc,left,top,right,bottom) 画椭圆并填充
Pie(...) 画饼图并填充
Chord(...) 画弦图并填充
RoundRect(...) 画圆角矩形并填充
Polygon(...) 画多边形并填充
SetViewportOrgEx(...) 设置视口原点
GetViewportOrgEx(...) 返回视口原点
SetWindowOrgEx(...) 设置窗口原点
GetWindowOrgEx(...) 返回窗口原点
SetMapMode(dc,MapMode) 设置场景映射模式
GetMapMode(dc) 返回场景映射模式
SetWindowExtEx(dc,width,height,Size) 设置场景范围
GetWindowExtEx(dc,Size) 返回场景范围,失败返回 0
GetDeviceCaps(dc,attrIndex) 返回场景指定属性
TextOut(dc,x,y,string,n) 在指定位置打印字符串前 n 个字符
BitBlt(...) 在场景间复制指定区域图象

PolyLine 画连续直线

参数 意义
Points Point 数组
n 数组中包含的点数

Point 结构

typedef struct tagPOINT {
   LONG x;
   LONG y;
} POINT;

PolyPolyLine 

PolyPolyLine(dc,lppt,lpPolyPoints,count)
参数 意义
lppt Point 数组,包含所有多义线的点
lpPolyPoints 整数数组,包含各多义线的端点数
cnt 多义线条数

Arc 画弧
Pie 画饼图
Chord 画弦图

Arc(dc,left,top,right,bottom,startX,startY,endX,endY)
Pie(dc,left,top,right,bottom,startX,startY,endX,endY)
Chord(dc,left,top,right,bottom,startX,startY,endX,endY)
参数 意义
left,top 椭圆左上角坐标
right,bottom 椭圆右下角坐标
startX,startY 此点与圆心的连线经过圆弧起点,默认逆时针方向
endX,endY 此点与圆心的连线经过圆弧终点

RoundRect 画圆角矩形

RoundRect(dc,left,top,right,bottom,width,height)
参数 意义
left,top 椭圆左上角坐标
right,bottom 椭圆右下角坐标
startX,startY 此点与圆心的连线经过圆弧起点,默认逆时针方向
endX,endY 此点与圆心的连线经过圆弧终点
width 圆角椭圆宽度
height 圆角椭圆高度

Polygon 画多边形

Polygon(dc,points,count)
参数 意义
points 坐标 Point 数组
count 点数

SetViewportOrgEx 设置视口原点
SetWindowOrgEx 设置窗口原点
GetViewportOrgEx
返回视口原点
GetWindowOrgEx 返回窗口原点

SetViewportOrgEx(dc,x,y,Point)
SetWindowOrgEx(dc,x,y,Point)
GetViewportOrgEx(dc,Point)
GetWindowOrgEx(dc,Point)
参数 意义
x,y 新原点坐标
Point 保存修改前的原点坐标值

MapMode 常量

常量 意义 坐标方向
Public Const MM_TEXT = 1 像素 Y向下,X向右
Public Const MM_LOMETRIC = 2 0.1毫米 Y向上,X向右
Public Const MM_HIMETRIC = 3 0.01毫米 Y向上,X向右
Public Const MM_LOENGLISH = 4 0.01英寸 Y向上,X向右
Public Const MM_HIENGLISH = 5 0.001英寸 Y向上,X向右
Public Const MM_TWIPS = 6 1/1440英寸 Y向上,X向右
Public Const MM_ISOTROPIC = 7 任意 (x = y) 可选
Public Const MM_ANISOTROPIC = 8 任意 (x = y) 可选

SetWindowExtEx 设置场景范围
GetWindowExtEx 返回场景范围

SetWindowExtEx(dc,cx,cy,Size)
GetWindowExtEx(dc,Size)
参数 意义
cx 场景宽度
cy 场景高度
size 保存范围的结构

size 结构

Public Type Size
    cx As Long
    cy As Long
End Type

attrIndex 属性常量

常量 意义
DRIVERVERSION 设备驱动程序版本
HORZSIZE 场景宽度,毫米(打印机可打印区域)
VERTSIZE 场景高度,毫米(打印机可打印区域)
HORZRES 场景宽度,逻辑单位(打印机可打印区域)
VERTRES 场景高度,逻辑单位(打印机可打印区域)
LOGPIXELSX 水平分辨率/英寸,逻辑单位
LOGPIXELSY 垂直分辨率/英寸,逻辑单位
PHYSICALHEIGHT 打印机纸张高度(含边距),逻辑单位
PHYSICALWIDTH 打印机纸张宽度(含边距),逻辑单位
PHYSICALOFFSETX 打印机的可打印区的水平偏移(左页边距)
PHYSICALOFFSETY 打印机的可打印区的垂直偏移(上页边距)
SCALINGFACTORX 打印机水平缩放系数
SCALINGFACTORY 打印机垂直缩放系数
BITSPIXEL 记录每个像素的位长度, 8 位/字节
PLANES 调色板个数
NUMBRUSHES 设备内建刷子个数
NUMPENS 设备内建画笔个数
NUMMARKERS 设备内建标记数
NUMFONTS 设备内建字体数
NUMCOLORS 设备颜色表入口
ASPECTX 设备像素宽度(见ASPECTXY)
ASPECTY 设备像素高度(见ASPECTXY)
ASPECTXY 设备像素对角尺寸。这些值是互相对应的,比如((ASPECTX^2)+(ASPECTY^2))^.5 = ASPECTXY
CLIPCAPS 下列常数之一:
CP_NONE:设备没有内建剪切
CP_RECTANGLE:设备可剪切矩形
CP_REGION:设备可剪切区域
BLTALIGNMENT 有的显示设备在图象对齐本常数值指定的地址范围时可更快的完成图象运算。若没有区别则为0
COLORRES 颜色分辨率(以位/像素位单位,见RASTERCAPS RC_PALETTE标志)
DESKTOPHORIZRES 桌面水平和垂直分辨率(仅适用于NT)。某些设备支持虚拟桌面可比物理显示尺寸大
DESKTOPVERTRES
CURVECAPS 描述内部曲线生成功能的标志。见api32。txt文件中关于CC_xxx的完整列表
LINECAPS 描述内部直线生成功能的标志。见api32。txt文件中关于LC_xxx的完整列表
NUMRESERVED 系统调色板保留入口
POLYGONCAPS 描述内部多边形生成功能的标志。见api32。txt文件中关于PC_xxx的完整列表
PDEVICESIZE PDEVICE内部结构的大小
RASTERCAPS 由下列值组成的标志:
R_BANDING:设备支持频带。RC_BIGFONT:字体可大于64K。RC_BITBLT:支持BitBlt。RC_BITMAP64K:位图可大于64K。RC_DI_BITMAP:支持SetDIBits和GetDIBits函数。RC_DIBTODEV:支持SetDIBitsToDevice函数。RC_FLOODFILL:支持FloodFill API。RC_NONE:不支持光栅操作。RC_PALETTE:设备基于调色板。 RC_SAVEBITMAP:可存储位图。RC_SCALING:内建缩放。RC_STRETCHBLT:支持 StretchBlt 。RC_STRETCHDIB:支持StretchDIBits
SIZEPALETTE 系统调色板入口(见RASTERCAPS RC_PALETTE标志)
TECHNOLOGY 下列常数之一:
DT_PLOTTER:绘图仪。DT_RASDISPLAY:光栅显示器。DT_RASPRINTER:光栅打印机。DT_RASCAMERA:光栅照相机。DT_CHARSTREAM:字符流。DT_METAFILE:图元文件。DT_DISPFILE:显示文件
TEXTCAPS 由下列值组成的标志:
TC_OP_CHARACTER:字体可被放在任意位置。TC_OP_STROKE:设备可删除内部字体任意笔画。 TC_CP_STROKE:内部字体可据任意像素剪切。TC_CR_90:字体可被旋转90度 。TC_CR_ANY:支持字符旋转 。TC_SF_X_YINDEP:支持字符X和Y方向独立缩放。TC_SA_DOUBLE:内部字体尺寸可被放大一倍。TC_SA_INTEGER:内部字体可以整数倍缩放。TC_SA_CONTIN:内部字体可被连续缩放。TC_EA_DOUBLE: 设备可创建粗体字。TC_IA_ABLE:设备可创建斜体字。TC_UA_ABLE: 设备可建带下划线字。TC_SO_ABLE: 设备可创建加框字。TC_RA_ABLE:支持光栅字体。TC_SCROLLBLT:支持光栅字体。TC_VA_ABLE: 支持矢量字体
VREFRESH 显示垂直刷新(只适用于NT)

BitBlt 复制场景区域

可能场景模式对此操作没有影响,复制总是以设备单位进行。

Function BitBlt(DestDc,x,y,width,height,SrcDc,srcX,srcY,dwRop)
参数 意义
DestDc 目标场景
x,y 目标场景起点坐标
width,height 宽度、高度
SrcDc 源场景
srcX,srcY 源场景起点坐标
dwRop 复制模式

dwRop 常量

常量 意义
BLACKNESS 目标区域填充黑色
DSTINVERT 目标区域颜色颠倒
MERGECOPY 混合,逻辑与操作
MERGEPAINT 混合,源颜色取反,再进行与操作
NOTSRCCOPY 源颜色取反,存入目标区域
NOTSRCERASE 与操作后,再取反
PATCOPY 复制模式
PATINVERT 异或操作
PATPAINT 或操作
SRCAND 与操作
SRCCOPY 直接复制
SRCERASE 或操作
SRCINVERT 异或操作
SRCPAINT 或操作
WHITENESS 目标区域填充白色