【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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开发(画笔、刷子、字体)相关推荐

  1. GCC for Win32开发环境介绍

    GCC for Win32开发环境介绍(1) 第一章 在视窗操作系统下的GCC 第一节GCC家族概览 GCC是一个原本用于Unix-like系统下编程的编译器.不过,现在GCC也有了许多Win32下的 ...

  2. win32开发(对话框启动)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 有过mfc开发经验的朋友都知道,在mfc下面有三种app开发的方式,它分别是mdi开发.sdi开 ...

  3. win32开发(调试)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 很多同学都喜欢看代码,但是不喜欢调试代码.其实,在我看来,调试代码本身也是一项重要的能力.一份代 ...

  4. 跟我一起玩Win32开发

    跟我一起玩Win32开发(1):关于C++的几个要点 我不知道各位,一提起 C++ ,第一感觉是什么?而据俺的观察,许多人几乎成了 " 谈 C 色变 " .不管是 C 还是 C++ ...

  5. 跟我一起玩Win32开发(4):创建菜单

    跟我一起玩Win32开发(4):创建菜单 也不知道发生什么事情,CSDN把我的文章弄到首页,结果有不少说我在误人子弟,是啊,我去年就说过了,如果你要成为砖家级人物,请远离我的博客,我这个人没什么特长, ...

  6. 跟我一起玩Win32开发(5):具有单选标记的菜单

    跟我一起玩Win32开发(5):具有单选标记的菜单 帅哥们,美女们,下午好,我又来误人子弟,请做好准备. 今天,我们的目的是,想要实现下图中的这种菜单效果. 就是一种类似单选按钮的菜单,多个菜单项中, ...

  7. 跟我一起玩Win32开发(25):监视剪贴板

    跟我一起玩Win32开发(25):监视剪贴板 自从郭大侠和蓉儿离开桃花岛后,最近岛比较寂静,有一种"门前冷落鞍马稀"的感觉.于是,老邪就拿出<九阴真经>认真阅读,同时用 ...

  8. win32开发(文件、字体和色彩)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] 在操作系统上,文件选择.色彩选择.和字体选择这些功能一般都是操作系统提供的.记得以前在写mfc的 ...

  9. 云炬Android开发笔记 3-2字体图标库集成与封装

    1.项目:android-iconify点此链接到Github 这是一个字体图标库,用字体来代替很多图片. Android开发经常将很多本地图标放在drawable和mipmap文件夹下,这样有一些坏 ...

最新文章

  1. 让你的eclipse插件只下载一次
  2. react native redux 梳理
  3. 2!=5 or 0在python中是否正确-不吹不擂,你想要的Python面试都在这里了【315+道题】...
  4. 实验四 恶意代码技术
  5. I.MX6 Android Linux shell MMPF0100 i2c 获取数据
  6. Linux fprintf的用法
  7. 如何进行正确的SQL性能优化
  8. Eclipse关闭XML文件验证的方法
  9. mysql 表空间加密,MySql(8.0)基于docker部署(加密存储表空间)
  10. oracle x kglob,x$kglob x$kgllk x$kglpn
  11. 影响大数据的数据质量因素
  12. 【转载】spring mvc 使用session
  13. matlab求数的因子,matlab中因子分析的函数factoran如何使用??
  14. 筛选中很容易粘贴到被隐藏部分_excel复制粘贴:如何将数据粘贴到筛选区域中?...
  15. 短视频源码下载、vue+html+elementui短视频播放实现,web、pc静态页短视频、手机网页版短视频
  16. 华硕飞行堡垒笔记本电脑驱动程序不能使用如何解决
  17. wine qq2011beta4
  18. 芯片行业常用的英文术语及其含义
  19. 关于pytorch中各种矩阵乘法运算的区别
  20. K-Means(K-均值)聚类算法

热门文章

  1. 快升级 iOS 10.3.1,修补了致命WiFi安全漏洞!
  2. shell脚本--判断输入的ip是否正确
  3. mysql报错 Row size too large ( 8126)
  4. OCP 11G 051题库解析笔记-总
  5. redis 设置密码 和 redis.config文件
  6. case when then的用法-leetcode交换工资
  7. Netty 的基本简单实例【服务端-客户端通信】
  8. vue-router之嵌套路由
  9. 代理模式vs适配器模式vs外观模式
  10. 微信支付之JSAPI开发-第二篇:业务流程详解与方案设计