MFC图形函数学习02——绘制像素点函数

news/2024/10/28 5:20:41/

       再次强调一下,我们这里学习的MFC图形函数,是指绘制二维图形的函数。一般来说,一个二维图形组成的基本要素是点、线、面以及相关的颜色。在本文中,将学习绘制像素点函数,与绘制像素点相关的其它基础知识也随着绘图函数学习一并介绍。
一、关于绘制像素点有两个功能相同的函数:
(1)函数SetPixel函数
       原型:COLORREF SetPixel(int x,int y,COLORREF color);
       参数:x、y屏幕上像素点坐标
                 clolor 绘制像素点使用的颜色
       返回值:返回值类型为COLORREF,即返回所使用的颜色
(2)SetPixelV函数
       原型:BOOL SetPixelV(int x,int y,COLORREF color);
       参数:x、y屏幕上像素点坐标
                 color 绘制像素点使用的颜色
       返回值:返回值为BOOL类型,成功返回非0数,失败返回0
二、对两个函数的说明
    (1)这两个函数的绘图效果是一样的,第二个函数的执行速度要快一些。
    (2)两个函数的返回值类型不同。
    (3)这两个函数都是CDC类的成员函数,因此使用时都需要CDC类对象或指针调用,我们在OnDraw函数中绘图时,传入的参数pDC就是CDC类对象指针,使用它就能调用各种绘图函数,格式:pDC->SetPixel(x,y,color);。
三、相关基础知识
    (1)CDC类:定义设备上下文对象的基类,设备可以理解成就是显示屏,上下文就是显示的内容;这个类内封装了绘图所需的成员函数。绘制像素点的两个函数就是这个类的成员函数,所以使用这两个函数需要CDC类的指针调用。这个类的函数还有很多,后边会一一学到。
    (2)关于COLORREF,它是MFC中表示颜色的一个类型,其本质是DWORD(无符号长整型)。为COLOREF对象赋值会使用到一个有参宏RGB()(和函数差不多),RGB宏返回值就是COLORREF类型的颜色值,可供有关绘图函数使用。RGB有三个参数:red、green、blue。这三个参数的类型是BYTE,BYTE类型的本质是由8个二进制位组成的无符号整形,和char一样,十进制取值范围是0~255。
       举例:定义一个纯红色COLORREF对象,步骤:COLORREF Red=RGB(255,0,0);。我们把这个Red作为参数传入到绘制像素点函数内,就能绘制出红色的点了。
四、案例程序(提示:代码插入到OnDraw函数"TODO:"下面即可运行)
       编制一段MFC程序,在自定义坐标系中,将 -5≤ x ≤5 且 -5≤ y ≤5区域内的所有像素点画成红色。代码及注释见下:

//设置自定义坐标系代码CRect rect;//定义CRect类对象GetClientRect(rect);//将窗口客户区位置、大小信息保存到rect中pDC->SetMapMode(MM_ANISOTROPIC); //模式选择:自定义坐标系pDC->SetWindowExt(rect.Width(), rect.Height()); //设置逻辑窗口尺寸pDC->SetViewportExt(rect.Width(), -rect.Height()); //设置窗口物理尺寸pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);//设置原点rect.OffsetRect(-rect.Width() / 2, -rect.Height() / 2);//重置rect的位置
//在自定义坐标系 -5≤ x ≤5 且 -5≤ y ≤5组成的方形区域内画上红色像素点COLORREF Red= RGB(255,0,0); //设置红色for (int x = -5; x <= 5; x++) //x轴循环{for (int y = -5; y <= 5; y++) //y轴循环{pDC->SetPixelV(x,y,Red); //利用OnDraw参数pDC调用SetPixelV}}

//运行效果:在窗口正中出现一个10*10像素的红色方块。


http://www.ppmy.cn/news/1542529.html

相关文章

asp.net core 入口 验证token,但有的接口要跳过验证

asp.net core 入口 验证token,但有的接口要跳过验证 在ASP.NET Core中&#xff0c;你可以使用中间件来验证token&#xff0c;并为特定的接口创建一个属性来标记是否跳过验证。以下是一个简化的例子&#xff1a; 创建一个自定义属性来标记是否跳过验证&#xff1a; public clas…

论当前的云计算

随着技术的不断进步和数字化转型的加速&#xff0c;云计算已经成为当今信息技术领域的重要支柱。本文将探讨当前云计算的发展现状、市场趋势、技术革新以及面临的挑战与机遇。 云计算的发展现状 云计算&#xff0c;作为一种通过网络提供可伸缩的、按需分配的计算资源服务模式&a…

HTML作业

作业 复现下面的图片 复现结果 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><form action"#"method"get"enctype"text/plain"><…

Rust初踩坑

一、下载 到官网https://www.rust-lang.org/zh-CN/tools/install下载你需要的版本 二、安装 执行rustup-init 文件&#xff0c;选择1 按提示直到安装完成 可以通过以下命令测试&#xff1a; rustc -V # 注意的大写的 V cargo -V # 注意的大写的 V三、在VScode中…

网安加·百家讲坛 | 徐一丁:金融机构网络安全合规浅析

作者简介&#xff1a;徐一丁&#xff0c;北京小西牛等保软件有限公司解决方案部总监&#xff0c;网络安全高级顾问。2000年开始从事网络安全工作&#xff0c;主要领域为网络安全法规标准研究、金融行业安全咨询与解决方案设计、信息科技风险管理评估等。对国家网络安全法规标准…

Windows 操作系统中事件驱动架构与注册表

在 Windows 操作系统中&#xff0c;事件驱动架构与注册表的结合非常关键。Windows 的图形用户界面&#xff08;GUI&#xff09;使用事件驱动架构来处理用户的输入和交互&#xff0c;而注册表则起到配置、管理和存储系统设置的作用。结合两者&#xff0c;可以深入理解 Windows 是…

Python中的pip命令安装与使用

Python中的pip命令简介 pip 是 Python 的包管理工具&#xff0c;用于安装和管理 Python 包。它允许你从 Python 包索引&#xff08;Python Package Index&#xff0c;简称 PyPI&#xff09;下载并安装第三方库和工具。pip 是 Python 官方推荐的包管理工具&#xff0c;并且从 P…

渗透测试-SQL注入基础知识

介绍几个常用函数&#xff1a; 1. version()——MySQL 版本 2. user()——数据库用户名 3. database()——数据库名 4. datadir——数据库路径 5. version_compile_os——操作系统版本 字符串连接函数 1. concat(str1,str2,...)——没有分隔符地连接字符串 2. concat_ws…