win32开发(画笔、刷子、字体)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
因为win32开发基本上都是和windows打交道,这些api其他的os也用不到,所以建议大家在学习win32的时候一定要安装msdn软件。这样不管有任何的疑问,或者是想查什么api,都非常的方便。
前几次我们说到的怎么绘制简单的图形,今天我们就聊一下win32下面如何使用画笔这些工具。其实不管是画笔、刷子,还是字体、位图,他们的使用都是一个套路。一般都会分成这几个步骤:1、创建画笔,2、将画笔绑定到设备上下文上面,3、恢复设备上下文,4、删除创建的画笔。那么,对应到函数呢,就分别是这几个函数,
CreatePen
SelectObject
SelectObject
DeleteObject
大家可能发现了,画笔绑定和恢复设备上下文都是一个函数,没关系,我们可以找一个具体的例子来看一看,
case WM_PAINT:HPEN hpen, hpenold;hpen = CreatePen(PS_SOLID, 5, RGB(255,0,255));hdc = BeginPaint(hWnd, &ps);hpenold = (HPEN)SelectObject(hdc, hpen);MoveToEx(hdc, 100, 100, NULL);LineTo(hdc, 150,230);Rectangle(hdc, 200, 200, 300, 300);Ellipse(hdc, 15, 15, 130, 130);SelectObject(hdc, hpenold);DeleteObject(hpen);EndPaint(hWnd, &ps);break;
在WM_PAINT消息处理代码里面,我们添加了画笔的动作。本身代码不复杂,支持添加了CreatePen、SelectObject、DeleteObject这三个函数。逻辑就是我们刚才说的那样,先创建,再绑定,接着恢复,最后删除,就是这么简单。
按照这个思路,我们可以考虑刷子应该怎么配置呢,其实是一样的,
case WM_PAINT:HBRUSH hbrush, hbrushold;hbrush = CreateSolidBrush(RGB(255,255,0));hdc = BeginPaint(hWnd, &ps);hbrushold = (HBRUSH)SelectObject(hdc, hbrush);MoveToEx(hdc, 100, 100, NULL);LineTo(hdc, 150,230);Rectangle(hdc, 200, 200, 300, 300);Ellipse(hdc, 15, 15, 130, 130);SelectObject(hdc, hbrushold);DeleteObject(hbrush);EndPaint(hWnd, &ps);break;
逻辑都是一样的,只要大家按照这个思路走,就不会出错。其他的位图、字体、设备上下文等等也都是这么做的。具体例子,我们经常在app应用中发现字体切换、字体变粗、填充图形等操作,基本都是这么来的,没有什么诀窍。这也是win32 gdi编程的规定动作,照着它走就可以了。
win32开发(画笔、刷子、字体)相关推荐
- GCC for Win32开发环境介绍
GCC for Win32开发环境介绍(1) 第一章 在视窗操作系统下的GCC 第一节GCC家族概览 GCC是一个原本用于Unix-like系统下编程的编译器.不过,现在GCC也有了许多Win32下的 ...
- win32开发(对话框启动)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 有过mfc开发经验的朋友都知道,在mfc下面有三种app开发的方式,它分别是mdi开发.sdi开 ...
- win32开发(调试)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很多同学都喜欢看代码,但是不喜欢调试代码.其实,在我看来,调试代码本身也是一项重要的能力.一份代 ...
- 跟我一起玩Win32开发
跟我一起玩Win32开发(1):关于C++的几个要点 我不知道各位,一提起 C++ ,第一感觉是什么?而据俺的观察,许多人几乎成了 " 谈 C 色变 " .不管是 C 还是 C++ ...
- 跟我一起玩Win32开发(4):创建菜单
跟我一起玩Win32开发(4):创建菜单 也不知道发生什么事情,CSDN把我的文章弄到首页,结果有不少说我在误人子弟,是啊,我去年就说过了,如果你要成为砖家级人物,请远离我的博客,我这个人没什么特长, ...
- 跟我一起玩Win32开发(5):具有单选标记的菜单
跟我一起玩Win32开发(5):具有单选标记的菜单 帅哥们,美女们,下午好,我又来误人子弟,请做好准备. 今天,我们的目的是,想要实现下图中的这种菜单效果. 就是一种类似单选按钮的菜单,多个菜单项中, ...
- 跟我一起玩Win32开发(25):监视剪贴板
跟我一起玩Win32开发(25):监视剪贴板 自从郭大侠和蓉儿离开桃花岛后,最近岛比较寂静,有一种"门前冷落鞍马稀"的感觉.于是,老邪就拿出<九阴真经>认真阅读,同时用 ...
- win32开发(文件、字体和色彩)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在操作系统上,文件选择.色彩选择.和字体选择这些功能一般都是操作系统提供的.记得以前在写mfc的 ...
- 云炬Android开发笔记 3-2字体图标库集成与封装
1.项目:android-iconify点此链接到Github 这是一个字体图标库,用字体来代替很多图片. Android开发经常将很多本地图标放在drawable和mipmap文件夹下,这样有一些坏 ...
最新文章
- 让你的eclipse插件只下载一次
- react native redux 梳理
- 2!=5 or 0在python中是否正确-不吹不擂,你想要的Python面试都在这里了【315+道题】...
- 实验四 恶意代码技术
- I.MX6 Android Linux shell MMPF0100 i2c 获取数据
- Linux fprintf的用法
- 如何进行正确的SQL性能优化
- Eclipse关闭XML文件验证的方法
- mysql 表空间加密,MySql(8.0)基于docker部署(加密存储表空间)
- oracle x kglob,x$kglob x$kgllk x$kglpn
- 影响大数据的数据质量因素
- 【转载】spring mvc 使用session
- matlab求数的因子,matlab中因子分析的函数factoran如何使用??
- 筛选中很容易粘贴到被隐藏部分_excel复制粘贴:如何将数据粘贴到筛选区域中?...
- 短视频源码下载、vue+html+elementui短视频播放实现,web、pc静态页短视频、手机网页版短视频
- 华硕飞行堡垒笔记本电脑驱动程序不能使用如何解决
- wine qq2011beta4
- 芯片行业常用的英文术语及其含义
- 关于pytorch中各种矩阵乘法运算的区别
- K-Means(K-均值)聚类算法