设置蓝色固实填充: setfillstyle(BLUE); 设置红色斜线填充:
setfillstyle(RED,LTSLASH_FILL);
设置黄色的自定义的填充样式(圆形图案填充):
setfillstyle(YELLOW,PATTERN_FILL,\设置绿色的自定义的填充样式(细斜线夹粗斜线图案填充):
setfillstyle(GREEN,PATTERN_FILL,\2.3.28setlinestyle 这个函数用于设置当前线形。
voidsetlinestyle(intlinestyle,WORDupattern=NULL,intthickness=1); 参数:
linestyle线型,可以是以下值: 值 PS_SOLID PS_DASH PS_DOT PS_DASHDOT
PS_DASHDOTDOT
PS_NULL PS_USERSTYLE
upattern自定义线形数据。
自定义规则:该数据为WORD类型,共16个二进制位,每位为1表示画线,为0表示空白。从低位到高位表示从起始到终止的方向。
仅当线型为PS_USERSTYLE时该参数有效。 thickness线形宽度。 示例:
设置线形为点划线:setlinestyle(PS_DASHDOT);
设置线形为宽度3像素的虚线:setlinestyle(PS_DASH,NULL,3); 2.3.29setwritemode
这个函数用于设置绘图位操作模式。
含义
线形为实线。
线形为:------------
线形为:············ 线形为:-·-·-·-·-·-· 线形为:-··-··-··-·· 线形为不可见。
线形样式是自定义的,依赖于upattern参数。
voidsetwritemode(intmode); 参数:
mode二元光栅操作码(即位操作模式),支持全部的16种二元光栅操作码,罗列如下: 位操作模式 R2_BLACK R2_COPYPEN R2_MASKNOTPEN
R2_MASKPENNOT
R2_MERGENOTPEN
R2_MERGEPEN
R2_MERGEPENNOT
R2_NOP R2_NOT R2_NOTCOPYPEN
R2_NOTMASKPEN
R2_NOTMERGEPEN
R2_NOTXORPEN
R2_WHITE R2_XORPEN 注:
1.AND/OR/NOT/XOR为布尔运算。
2.\屏幕颜色\指绘制所经过的屏幕像素点的颜色。
3.\当前颜色\是指通过setcolor设置的用于当前绘制的颜色。
2.4文字输出相关函数 2.4.1相关函数和数据如下:
描述
绘制出的像素颜色=黑色
绘制出的像素颜色=当前颜色(默认) 绘制出的像素颜色=屏幕颜色AND(NOT当前
颜色)
R2_MASKPEN
绘制出的像素颜色=屏幕颜色AND当前颜色 绘制出的像素颜色=(NOT屏幕颜色)AND当前颜色
绘制出的像素颜色=屏幕颜色OR(NOT当前颜色)
绘制出的像素颜色=屏幕颜色OR当前颜色 绘制出的像素颜色=(NOT屏幕颜色)OR当前颜色
绘制出的像素颜色=屏幕颜色 绘制出的像素颜色=NOT屏幕颜色 绘制出的像素颜色=NOT当前颜色 绘制出的像素颜色=NOT(屏幕颜色AND当前颜色)
绘制出的像素颜色=NOT(屏幕颜色OR当前颜色)
绘制出的像素颜色=NOT(屏幕颜色XOR当前颜色)
绘制出的像素颜色=白色
绘制出的像素颜色=屏幕颜色XOR当前颜色
函数或数据
getfont
LOGFONT
outtext
outtextxy
drawtext
setbkmode
setfont
textheight
textwidth
2.4.2drawtext
描述
获取当前字体样式。 保存字体样式的结构体。 在当前位置输出字符串。 在指定位置输出字符串。 在指定区域内以指定格式输出字符串。
设置输出文字时的背景模式。 设置当前字体样式。
获取字符串实际占用的像素高度。 获取字符串实际占用的像素宽度。
这个函数用于在指定区域内以指定格式输出字符串。 intdrawtext(LPCTSTRstr,RECT*pRect,UINTuFormat); intdrawtext(TCHARc,RECT*pRect,UINTuFormat); 参数:
str待输出的字符串。
pRect指定的矩形区域的指针。某些uFormat标志会使用这个矩形区域做返回值。详见后文说明。
uFormat指定格式化输出文字的方法。详见后文说明。 C待输出的字符。 返回值:
函数执行成功时,返回文字的高度。
如果指定了DT_VCENTER或DT_BOTTOM标志,返回值表示从pRect->top到输出文字的底部的偏移量。
如果函数执行失败,返回0。 说明:
注:下文关于文字位置的描述,均是相对于pRect指向的矩形而言。 标志 DT_BOTTOM
描述
调整文字位置到矩形底部,仅当和DT_SINGLELINE一起使用时有效。
检测矩形的宽高。如果有多行文字,drawtext使用pRect指定的宽度,并且扩展矩形的底部以容纳每一行文字。如果只有
DT_CALCRECT
一行文字,drawtext修改pRect的右边以容纳最后一个文字。无论哪种情况,drawtext都返回格式化后的文字高度,并且不输出文字。
DT_CENTER DT_EDITCONTROL
文字水平居中。
以单行编辑的方式复制可见文本。具体的说,就是以字符的平均宽度为计算依据,同时用这个方式应用于编辑控制,并且这种方式不显示可见部分的最后一行。
对于文本显示,如果字符串的末字符不在矩形内,它会被截
DT_END_ELLIPSIS
断并以省略号标识。如果是一个单词而不是一个字符,其末尾超出了矩形范围,它不会被截断。
字符串不会被修改,除非指定了DT_MODIFYSTRING标志。
展开TAB符号。默认每个TAB占8个字符位置。注意,
DT_EXPANDTABS
DT_WORD_ELLIPSIS、DT_PATH_ELLIPSIS和DT_END_ELLIPSIS不能和DT_EXPANDTABS一起用。
DT_EXTERNALLEADING
在行高里包含字体的行间距。通常情况下,行间距不被包含在正文的行高里。
Windows2000/XP:忽略文字中的前缀字符(&),并且前缀字符后面的字符不会出现下划线。其他前缀字符仍会被处理。例如:
DT_HIDEPREFIX
输入字符串:\通常输出:\DTDT_HIDEPREFIX:\
DT_INTERNAL DT_LEFT
DT_MODIFYSTRING DT_NOCLIP
DT_NOFULLWIDTHCHARBREAK
使用系统字体计算文字的宽高等属性。 文字左对齐。
修改指定字符串为显示出的正文。仅当和DT_END_ELLIPSIS或DT_PATH_ELLIPSIS标志同时使用时有效。
使输出文字不受pRect裁剪限制。使用DT_NOCLIP会使drawtext执行稍快一些。
Windows2000/XP:防止换行符插入到
DBCS(double-widecharacterstring,即宽字符串),换行规则相当于SBCS字符串。仅当和DT_WORDBREAK一起使用时有效。例如,
汉字就是宽字符,设置该标志后,连续的汉字会像英文单词一样不被换行符中断。
关闭前缀字符的处理。通常,DrawText解释前缀转义符&为其后的字符加下划线,解释&&为显示单个&。指定DT_NOPREFIX,
DT_NOPREFIX
这种处理被关闭。例如:
输入字符串:\通常输出:\DT_NOPREFIX:\
对于显示的文字,用省略号替换字符串中间的字符以便容纳
DT_PATH_ELLIPSIS
于矩形内。如果字符串包含反斜杠(\\),DT_PATH_ELLIPSIS尽可能的保留最后一个反斜杠后面的文字。
字符串不会被修改,除非指定了DT_MODIFYSTRING标志。
Windows2000/XP:仅仅在(&)前缀字符的位置下绘制一个下划线。不绘制字符串中的任何其他字符。例如:
DT_PREFIXONLY
输入字符串:\通常输出:\DT_PREFIXONLY:\
DT_RIGHT DT_RTLREADING DT_SINGLELINE
文字右对齐。
设置从右向左的阅读顺序(当文字是希伯来文或阿拉伯文时)。默认的阅读顺序是从左向右。
使文字显示在一行。回车和换行符都无效。
设置TAB制表位。uFormat的15–8位指定TAB的字符宽度。
DT_TABSTOP
默认TAB表示8个字符宽度。注意,DT_CALCRECT、
DT_EXTERNALLEADING、DT_INTERNAL、DT_NOCLIP和DT_NOPREFIX不能和DT_TABSTOP一起用。
DT_TOP DT_VCENTER DT_WORDBREAK DT_WORD_ELLIPSIS 示例:
以下范例在屏幕中央输出字符串“HelloWorld”: #include
//绘图环境初始化
文字顶部对齐。
文字垂直居中。仅当和DT_SINGLELINE一起使用时有效。 自动换行。当文字超过右边界时会自动换行(不拆开单词)。回车符同样可以换行。
截去无法容纳的文字,并在末尾增加省略号。