win32编程笔记
来源:互联网 发布:淘宝客团队运营思路 编辑:程序博客网 时间:2024/05/16 16:21
//获取窗口尺寸(画对角线)
GetClientRect(hWnd, &rect);
MoveToEx(hdc, rect.left, rect.top, NULL);
LineTo(hdc, rect.right, rect.bottom);
//数组点相连
POINT apt[4] = { 100, 100, 200, 100, 200, 200, 100, 200 };
Polyline(hdc, apt, sizeof(apt) / sizeof(POINT));//无视点的位置
PolylineTo(hdc, apt, sizeof(apt) / sizeof(POINT));//从起始点开始连数组里的点,最后保留位置
//边框绘制
Rectangle(hdc,xLeft,yTop,xRight,yBottom);//画矩形
Ellipse(hdc,xLeft,yTop,xRight,yBottom);//在矩形内画椭圆
RoundRect(hdc,xLeft,yTop,xRight,yBottom,xCornerEllipse,yCornerEllipse);//圆角矩形
Arc(hdc,xLeft,yTop,xRight,yBottom,xStart,yStart,xEnd,yEnd);//圆弧
Chord//加一条弦
Pie//扇形
//贝塞尔曲线
PolyBezier(hdc,apt,iCount);//四个点,起点,控点一,控点二,终点
PolyBezierTo(hdc,apt,iCount);//三个点,控点一,控点二,终点
//画笔
HPEN hPen;
hPen = (HPEN)GetStockObject(BLACK_PEN);//选择备用画笔
SelectObject(hdc, hPen);//应用
//创建画笔
hPen=CreatePen(iPenStyle,iWidth,crColor);
/*iPenStyle:
PS_SOLID 实心线
PS_DASH 虚线
PS_DOT 点线
PS_DASHDOT 点划线
PS_DASHDOTDOT 双点划线
PS_NULL 无
PS_INSIDEFRAME 边缘对中的实心线*/
//iWidth系统默认为 1
WM_CREATE:
static HPEN hPen1,hPen2,hPen3;
hPen1=CreatePen(PS_SOLID,1,0);
hPen2=CreatePen(PS_SOLID,3,RGB(255,0,0));
hPen3=CreatePen(PS_DOT,0,0);
COLORREF crColor;
crColor = RGB(0, 255, 255);
hPen = CreatePen(PS_DOT, 1, crColor);
//保存默认画笔
hPenOld=(HPEN)SelectObject(hdc,hPen);
SelectObject(hdc,hPenOld);
DeleteObject(hPen);
//点划线等的空隙处填充颜色,默认背景色
SetBKColor(hdc,crColor);
SetBKColor(hdc,TRANSPARENT);//透明
GetBKMode //查询填充色
//画刷
HBRUSH hBrush;
hBrush=GetStockObject(hdc,hBrush);
SelectObject(hdc,hBrush);
/*备用画刷
WHITE_BRUSH
LTGRAY_BRUSH
GRAY_BRUSH
DKGRAY_BRUSH
BLACK_BRUSH
NULL_BRUSH */
hBrush=CreateSolidBrush(crColor);
hBrush=CreateHatchBrush(iHatchStyle,crColor);
/*iHatchStyle表示阴影线标记的外观
HS_HORIZONTAL 水平线
HS_VERTICAL 竖直线
HS_FDIAGONAL 主斜线
HS_BDIAGONAL 副斜线
HS_CROSS 正交格子
HS_DIAGCROSS 斜格子 */
//多边形填充
Polygon(hdc,apt,iCount);//会自动首尾相连
PolyPolygon(hdc,apt,aiCounts,iPolyCount);
/* 绘制多个多边形
iPolyCount为多边形个数
aiCounts数组为当前多边形的点数 */
//可以设置填充模式,默认为ALTERNATE(交替)
SetPolyFillMode(hdc,iMode);
//iMode:ALTERNATE(交替) WINDING(螺旋)
/* ALTERNATE:从一个封闭区域的一点向无穷远画线,若穿过奇数条线,则填充,否则不填充;
WINDING:如果穿过奇数条线,则填充;若穿越的偶数条线中,不同方向的数目相等,则不填充;*/
//映射模式(默认左上角原点,像素)
SetMapMode(hdc,iMapMode);
/*iMapMode映射模式
MM_TEXT 像素 右下正方向
MM_LOMETRIC 0.1mm 右上
MM_HIMETRIC 0.01mm 右上
MM_LOENGLISH 0.01in 右上
MM_HIENGLISH 0.001in 右上
MM_TWIPS 1/1440in 右上
MM_ISOTROPIC 任意(x=y) 可选
MM_ANISOTROPIC 任意(x!=y) 可选 */
iMapMode=GetMapMode(hdc);//获取当前映射模式
SetMapMode(hdc,MM_LOENGLISH);
TextOut(hdc,50,-100,TEXT("hello"),5);//左上角向右0.5英寸,向下1英寸
//设置时钟
case WM_CREATE:
SetTimer(hWnd, 9999, 1000, NULL);
break;
case WM_TIMER:
if (wParam == 9999)
InvalidateRect(hWnd, NULL, true);
break;
//字体颜色
SetTextColor(hdc,crColor);
//背景颜色
SetBkColor(hdc,crColor);
//获取文字信息
GetTextMetrics(hdc,&tm);
/*tmHeight //高度
tmExternalLeading //行间距
tmAveCharWidth //小写字符的加权平均宽度,大写按照1.5倍计算
tmMaxCharWidth //字体中最宽的字符的宽度*/
TextOut(hdc, 100, 100, L"你好世界", 5);
//exam2
int iLength;
TCHAR szBuffer[40];
iLength=wsprintf(szBuffer,TEXT("The sum of %i and %i is %i"),iA,iB,iA+iB);
TextOut(hdc,x,y,szBuffer,iLength);
//字体
hFont=GetStockObject(iFont);
SelectObject(hdc,hFont);
//创建字体的函数
HFONT createMyFont(TCHAR *name, int height)
{
return CreateFont
(
height,//字体高度
0,//宽度,0表示最佳宽度
0,//文本倾斜度
0,//字体倾斜度
FW_HEAVY,//字体粗度,这个表示最粗
0,//非斜体字
0,//无下划线
0,//无删除线
GB2312_CHARSET,//使用的字符集
OUT_DEFAULT_PRECIS,//输出精度为默认精度
CLIP_DEFAULT_PRECIS,//剪裁精度为默认精度
DEFAULT_QUALITY,//输出质量为默认值
DEFAULT_PITCH | FF_DONTCARE,//字间距和字体系列使用默认值
name
);
}
//
LPWSTR poem[4] = { L"白日依山尽", L"黄河入海流", L"欲穷千里目", L"更上一层楼" };
LPWSTR str;
hFont = createMyFont(L"黑体", 20);
SelectObject(hdc, hFont);
str = poem[0];
TextOut(hdc, 100, 100, str, 5);
hFont = createMyFont(L"宋体", 30);
crColor = RGB(255, 0, 0);
SetTextColor(hdc, crColor);
SelectObject(hdc, hFont);
str = poem[1];
TextOut(hdc, 100, 200, str, 5);
GetClientRect(hWnd, &rect);
MoveToEx(hdc, rect.left, rect.top, NULL);
LineTo(hdc, rect.right, rect.bottom);
//数组点相连
POINT apt[4] = { 100, 100, 200, 100, 200, 200, 100, 200 };
Polyline(hdc, apt, sizeof(apt) / sizeof(POINT));//无视点的位置
PolylineTo(hdc, apt, sizeof(apt) / sizeof(POINT));//从起始点开始连数组里的点,最后保留位置
//边框绘制
Rectangle(hdc,xLeft,yTop,xRight,yBottom);//画矩形
Ellipse(hdc,xLeft,yTop,xRight,yBottom);//在矩形内画椭圆
RoundRect(hdc,xLeft,yTop,xRight,yBottom,xCornerEllipse,yCornerEllipse);//圆角矩形
Arc(hdc,xLeft,yTop,xRight,yBottom,xStart,yStart,xEnd,yEnd);//圆弧
Chord//加一条弦
Pie//扇形
//贝塞尔曲线
PolyBezier(hdc,apt,iCount);//四个点,起点,控点一,控点二,终点
PolyBezierTo(hdc,apt,iCount);//三个点,控点一,控点二,终点
//画笔
HPEN hPen;
hPen = (HPEN)GetStockObject(BLACK_PEN);//选择备用画笔
SelectObject(hdc, hPen);//应用
//创建画笔
hPen=CreatePen(iPenStyle,iWidth,crColor);
/*iPenStyle:
PS_SOLID 实心线
PS_DASH 虚线
PS_DOT 点线
PS_DASHDOT 点划线
PS_DASHDOTDOT 双点划线
PS_NULL 无
PS_INSIDEFRAME 边缘对中的实心线*/
//iWidth系统默认为 1
WM_CREATE:
static HPEN hPen1,hPen2,hPen3;
hPen1=CreatePen(PS_SOLID,1,0);
hPen2=CreatePen(PS_SOLID,3,RGB(255,0,0));
hPen3=CreatePen(PS_DOT,0,0);
COLORREF crColor;
crColor = RGB(0, 255, 255);
hPen = CreatePen(PS_DOT, 1, crColor);
//保存默认画笔
hPenOld=(HPEN)SelectObject(hdc,hPen);
SelectObject(hdc,hPenOld);
DeleteObject(hPen);
//点划线等的空隙处填充颜色,默认背景色
SetBKColor(hdc,crColor);
SetBKColor(hdc,TRANSPARENT);//透明
GetBKMode //查询填充色
//画刷
HBRUSH hBrush;
hBrush=GetStockObject(hdc,hBrush);
SelectObject(hdc,hBrush);
/*备用画刷
WHITE_BRUSH
LTGRAY_BRUSH
GRAY_BRUSH
DKGRAY_BRUSH
BLACK_BRUSH
NULL_BRUSH */
hBrush=CreateSolidBrush(crColor);
hBrush=CreateHatchBrush(iHatchStyle,crColor);
/*iHatchStyle表示阴影线标记的外观
HS_HORIZONTAL 水平线
HS_VERTICAL 竖直线
HS_FDIAGONAL 主斜线
HS_BDIAGONAL 副斜线
HS_CROSS 正交格子
HS_DIAGCROSS 斜格子 */
//多边形填充
Polygon(hdc,apt,iCount);//会自动首尾相连
PolyPolygon(hdc,apt,aiCounts,iPolyCount);
/* 绘制多个多边形
iPolyCount为多边形个数
aiCounts数组为当前多边形的点数 */
//可以设置填充模式,默认为ALTERNATE(交替)
SetPolyFillMode(hdc,iMode);
//iMode:ALTERNATE(交替) WINDING(螺旋)
/* ALTERNATE:从一个封闭区域的一点向无穷远画线,若穿过奇数条线,则填充,否则不填充;
WINDING:如果穿过奇数条线,则填充;若穿越的偶数条线中,不同方向的数目相等,则不填充;*/
//映射模式(默认左上角原点,像素)
SetMapMode(hdc,iMapMode);
/*iMapMode映射模式
MM_TEXT 像素 右下正方向
MM_LOMETRIC 0.1mm 右上
MM_HIMETRIC 0.01mm 右上
MM_LOENGLISH 0.01in 右上
MM_HIENGLISH 0.001in 右上
MM_TWIPS 1/1440in 右上
MM_ISOTROPIC 任意(x=y) 可选
MM_ANISOTROPIC 任意(x!=y) 可选 */
iMapMode=GetMapMode(hdc);//获取当前映射模式
SetMapMode(hdc,MM_LOENGLISH);
TextOut(hdc,50,-100,TEXT("hello"),5);//左上角向右0.5英寸,向下1英寸
//设置时钟
case WM_CREATE:
SetTimer(hWnd, 9999, 1000, NULL);
break;
case WM_TIMER:
if (wParam == 9999)
InvalidateRect(hWnd, NULL, true);
break;
//字体颜色
SetTextColor(hdc,crColor);
//背景颜色
SetBkColor(hdc,crColor);
//获取文字信息
GetTextMetrics(hdc,&tm);
/*tmHeight //高度
tmExternalLeading //行间距
tmAveCharWidth //小写字符的加权平均宽度,大写按照1.5倍计算
tmMaxCharWidth //字体中最宽的字符的宽度*/
TextOut(hdc, 100, 100, L"你好世界", 5);
//exam2
int iLength;
TCHAR szBuffer[40];
iLength=wsprintf(szBuffer,TEXT("The sum of %i and %i is %i"),iA,iB,iA+iB);
TextOut(hdc,x,y,szBuffer,iLength);
//字体
hFont=GetStockObject(iFont);
SelectObject(hdc,hFont);
//创建字体的函数
HFONT createMyFont(TCHAR *name, int height)
{
return CreateFont
(
height,//字体高度
0,//宽度,0表示最佳宽度
0,//文本倾斜度
0,//字体倾斜度
FW_HEAVY,//字体粗度,这个表示最粗
0,//非斜体字
0,//无下划线
0,//无删除线
GB2312_CHARSET,//使用的字符集
OUT_DEFAULT_PRECIS,//输出精度为默认精度
CLIP_DEFAULT_PRECIS,//剪裁精度为默认精度
DEFAULT_QUALITY,//输出质量为默认值
DEFAULT_PITCH | FF_DONTCARE,//字间距和字体系列使用默认值
name
);
}
//
LPWSTR poem[4] = { L"白日依山尽", L"黄河入海流", L"欲穷千里目", L"更上一层楼" };
LPWSTR str;
hFont = createMyFont(L"黑体", 20);
SelectObject(hdc, hFont);
str = poem[0];
TextOut(hdc, 100, 100, str, 5);
hFont = createMyFont(L"宋体", 30);
crColor = RGB(255, 0, 0);
SetTextColor(hdc, crColor);
SelectObject(hdc, hFont);
str = poem[1];
TextOut(hdc, 100, 200, str, 5);
0 0
- Win32编程笔记
- Win32编程学习笔记
- win32编程笔记
- Win32编程day01 学习笔记
- Win32 串口编程笔记1
- WIN32 API 多线程编程学习笔记
- Win32 API编程笔记(转)
- Win32编程
- Win32编程
- C和Win32的多线程编程(MSDN笔记整理)
- 达内学习笔记---win32编程窗口函数
- windows编程笔记(win32编程)以及其在游戏开发中的作用
- Win32串口编程
- Win32编程心得。一
- Win32编程心得。二
- Win32的菜单编程
- Win32编程基础知识
- WIN32串口编程
- TSL SSL
- Linux常用命令发布啦!
- HTML中空格的应用
- mysql使用instr达到in(字符串)的效果
- 设计模式之六大原则
- win32编程笔记
- 第四十讲项目1——小明借书
- 11款最棒的Linux数据恢复工具发布啦!
- BOSE QC35 蓝牙卡顿,断断续续问题
- MySQL 安装及其单机多实例部署
- myeclipse 10激活,本人已测试过可行
- 微信充值取消出现闪屏问题引发的思考
- 【caffe学习笔记之6】caffe-matlab/python训练LeNet模型并应用于mnist数据集(1)
- Unity内存优化经验分享