1. LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
  2. {
  3. HDC hdc;
  4. PAINTSTRUCT ps;
  5. RECT rect;
  6. HPEN hPen, hOldPen;
  7.  
  8. switch (message)
  9. {
  10. case WM_PAINT:
  11. hdc = BeginPaint(hwnd, &ps);
  12. GetClientRect(hwnd, &rect);
  13. //1.获取画笔
  14. //hPen=GetStockObject(BLACK_PEN);
  15. //2.自己新建画笔
  16. //方法一:
  17. //封闭图像时,使用线宽中间作为边界,所以会比想要的大小多出来一部分(线宽大小)
  18. //hPen = CreatePen(PS_SOLID, 100, RGB(255,0,0));
  19. //对于虚线而言,若是线宽大于1则会显示实现,原来线条的样式失效
  20. //hPen = CreatePen(PS_DASH ,0.1, RGB(255, 0, 0));
  21. //hPen = CreatePen(PS_DASHDOT, 0.1, RGB(255, 0, 0));
  22. //hPen = CreatePen(PS_DASHDOTDOT, 0.1, RGB(255, 0, 0));
  23. //用于封闭图像的使用:在后面可以进行填充 边框向内压缩
  24. //hPen = CreatePen(PS_INSIDEFRAME, 10, RGB(255, 0, 0));
  25.  
  26. //方法二:
  27. LOGPEN pen[];
  28. for (int i = ; i < ;i++)
  29. {
  30. pen[i].lopnStyle = PS_SOLID;
  31. pen[i].lopnWidth.x = (i + ) * ;
  32. pen[i].lopnColor = RGB( * i, , );
  33. }
  34. //设置多个画笔样式
  35. //使用createpenindorect直接取出样式使用,代码简洁明了,也更加具有可重用性
  36. for (int i = ; i < ;i++)
  37. {
  38. hPen = CreatePenIndirect(&pen[i]);
  39.  
  40. hOldPen = SelectObject(hdc, hPen);
  41.  
  42. Ellipse(hdc, +*i, , +*i, );
  43.  
  44. DeleteObject(hPen);
  45. }
  46.  
  47. // MoveToEx(hdc, rect.left, (rect.bottom-rect.top) / 2, NULL);
  48. // LineTo(hdc, rect.right, (rect.bottom - rect.top) / 2);
  49.  
  50. //只能删除自己定义的对象,系统带有的不允许删除
  51. //DeleteObject(hPen);
  52. SelectObject(hdc, hOldPen);
  53.  
  54. EndPaint(hwnd, &ps);
  55.  
  56. break;
  57. case WM_DESTROY:
  58. PostQuitMessage();
  59. return ;
  60. }
  61.  
  62. return DefWindowProc(hwnd, message, wParam, lParam);
  63. }

学习windows编程 day3 之 自定义画笔的两种方法的更多相关文章

  1. 学习windows编程 day3 之滚动条完善

    1.不再使用setscrollrange,setscrollpos,getscrollrange,getscrollpos这些函数,这只是有助于理解其中运行原理 2.改用setscrollinfo,g ...

  2. windows 7中添加新硬件的两种方法(本地回环网卡)

    最近在windows7上使用VMwareWorkstation7玩一些实验,遇到需要配置不同网络的问题. 因为在windows2003server上习惯使用要本地回环网卡了,那就想着在Windows7 ...

  3. 学习windows编程 day4 之 自定义映射

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  4. 学习windows编程 day3 之 设置当前的背景颜色

    LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...

  5. 学习windows编程 day3 之窗口绘画二:边框绘制函数

    #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM l ...

  6. 学习windows编程 day3 之窗口绘画一:点线绘制

    #include <windows.h> #include <math.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, ...

  7. iOS 中使用 XIB 自定义cell 的两种方法 以及 编译出现常见 的错误 ++++(xcode6.0之后)

    一. 注册cell 1.创建自定义cell并勾选 xib :(勾选xib就会自动生成与cell文件关联的xib) 2.在 tableViewController里注册自定义Cell (或者遵守tabl ...

  8. .Net实现Windows服务安装完成后自动启动的两种方法

    考虑到部署方便,我们一般都会将C#写的Windows服务制作成安装包.在服务安装完成以后,第一次还需要手动启动服务,这样非常不方便. 方法一:在安装完成事件里面调用命令行的方式启动服务 此操作之前要先 ...

  9. iOS 中使用 XIB 自定义cell的两种方法以及编译出现常见 的错误 (xcode6.0之后)

    一. 注册cell 1.创建自定义cell并勾选 xib :(勾选xib就会自动生成与cell文件关联的xib) 2.在 tableViewController里注册自定义Cell (或者遵守tabl ...

随机推荐

  1. Beta 冲刺报告模板

    Beta 冲刺报告模板 十分钟左右站立会议,控制好时间,不要在此会议上讨论细节问题. 每组一份博客,组内共享,每人都需提交. 模板 队名:xxx 组员1(组长) 过去两天完成了哪些任务 文字/口头描述 ...

  2. 『编程题全队』"Gugua"事务管理系统项目宣传文案

    一.项目简介 1.项目简介 Gugua是为了解决有事务管理需要的人群的痛苦, 他们需要 一个便利和高效的个人和团体事务管理平台,但是现有的方案并没有很好地解决这些需求,我们有独特的办法是提供跨平台的软 ...

  3. Bootstrap Validator使用特性,动态(Dynamic)添加的input的验证问题

    http://1000hz.github.io/bootstrap-validator/#validator-usage Validated fields By default, the valida ...

  4. Linux预处理、编译、汇编、链接和运行的过程(包括一些基本的命令)

    转自Quinn0918的博客 一.预编译 1.将所有的#define删除,并展开所有的宏定义: 2.处理所有的预编译指令,例如:#if,#elif,#else,#endif; 3.处理#include ...

  5. ubuntu安装steam

    增加第三方自由库的软件支持 sudo add-apt-repository multiverse 增加更新支持包 sudo add-apt-repository multiverse 安装steam ...

  6. Spring的各个jar包的作用介绍

    spring4中各个jar包的介绍: Spring AOP:Spring的面向切面编程,提供AOP(面向切面编程)的实现 Spring Aspects:Spring提供的对AspectJ框架的整合Sp ...

  7. html DOM導航

    getElementByTagname()獲取所有相同標籤的節點列表,length表示節點的長度: lastchild表示最後一個子節點,firstchild表示第一個子節點,parentnode表示 ...

  8. Python——socketsever模块

    1.作用:同时与多个客户端通信 import socketserver class MyServer(skcketserver.BaseRequestHandler): def handle(self ...

  9. React 组件库框架搭建

    前言 公司业务积累了一定程度,需要搭建自己的组件库,有了组件库,整个团队开发效率会提高恨多. 做组件库需要提供开发调试环境,和组件文档的展示,调研了几个比较主流的方案,如下: docz 配置简单,功能 ...

  10. iOS开发中@property的属性weak nonatomic strong readonly等

    请看  https://www.cnblogs.com/liubeimeng/p/4244686.html