windows核心编程--2、windows的画笔画刷以及一些简单的应用

一、前言

    该系列前几篇:
     windows核心编程--1、使用vs2019编写第一个win32项目


二、相关工具

    IDE:vs2019
    其他格式图片转ico脚本(贴在文末)


三、实验要求

    1、改变win32程序标题栏图标、鼠标样式以及任务栏图标。
    2、给菜单栏添加一个退出记事本的子项,并实现该功能。
    3、使用自创的画笔以及画刷绘制线、多边形、椭圆等图形并填充。


四、实现

    1、使用vs2019创建一个windows桌面应用程序,如下所示:

1.png

    2、找到wcex处,修改wcex.hCursor属性,改变鼠标样式,这里改变成IDC_CROSS即十字形状,如下所示:

2.png

    3、在vs2019菜单处,打开视图-->其他窗口-->资源视图,点击其右侧Icon(右键点击)-->添加资源,添加ico图标资源,在代码中找到wcex.hIcon改变其属性以改变该窗口任务栏图标,找到wcex.hIconSm改变标题栏的小图标,如下所示:

3.png

4.png

5.png

6.png

7.png

    4、在资源视图中,找到Menu-->IDC_MY点击,在其左侧编辑菜单子项和在右下角编辑该子项ID(该ID在我们点击该项时会产生一个这个ID消息传给我们的消息处理函数,以响应用户),最后在消息处理函数中的WM_COMMAND消息中添加相应的事件处理代码,如下所示:

8.png

9.png

11.png

  5、在代码中找到WM_PAINT,添加我们要绘制的图形,先说一下绘制的基本过程:
    a、首先利用GetDC或者BeginPaint函数获取绘制句柄,其中,GetDC函数有一个参数,为要绘制的窗口句柄。
    b、接着利用::CreatePen函数创建一个自创画笔,该函数有3个参数,第一个参数为画笔的形状,第二个参数为画笔的粗细,第三个参数为画笔的颜色,例如HPEN hpen = ::CreatePen(PS_SOLID, 2, RGB(138,43,226));,创建完画笔后,需要用::SelectObject函数将该画笔选入,该函数有两个参数,第一个参数为我们用GetDC函数得到的绘制句柄,第二个参数为要选入的对象,例如::SelectObject(hdc, hpen);
    c、接着利用::CreateSolidBrush函数创建一个自创画刷,该函数只有一个参数,为该画刷的颜色,例如HBRUSH hbrush = ::CreateSolidBrush(RGB(255, 255, 0));,同样的,创建完画笔后,需要用::SelectObject函数将该画笔选入。
    接着就是利用LineToArc等函数绘制图形,这些api就不再细说了,百度去搜索一些这些api即可,会在文末贴一篇写得比较全的博客链接。

10.png


五、实验结果截图

12.png

六、一些链接和图片转换代码

  绘制图形api

  图片转换代码:
    使用说明:python conversion.py -P 要转换的图片路径
实验代码:(命名为不是conversion.py请更改上面相应地方)

import PythonMagick
from optparse import OptionParser

store_position=''
start_position=''
parse = OptionParser()
parse.add_option('-P',action = 'store',type = 'string',dest = 'position',help = '输入图片位置')
(options,args) = parse.parse_args()
start_position = options.position
x = len(start_position)
store_position = start_position[0:(x - 4)]
store_position += '.ico'
img = PythonMagick.Image(start_position)
img.sample('128x128')
img.write(store_position)
print(f'转换完成!{start_position}已经转换到了{store_position}')
原文地址:https://www.cnblogs.com/aWxvdmVseXc0/p/12814023.html