当前位置: 首页 > news >正文

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

       再次强调一下,我们这里学习的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像素的红色方块。

相关文章:

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

再次强调一下&#xff0c;我们这里学习的MFC图形函数&#xff0c;是指绘制二维图形的函数。一般来说&#xff0c;一个二维图形组成的基本要素是点、线、面以及相关的颜色。在本文中&#xff0c;将学习绘制像素点函数&#xff0c;与绘制像素点相关的其它基础知识也随着绘图函数学…...

Oracle CONNECT BY、PRIOR和START WITH关键字详解

Oracle CONNECT BY、PRIOR和START WITH关键字详解 1. 基本概念2. 数据示例3. SQL示例3.1. 查询所有员工及其上级3.2. 显示层次结构3.3. 查询特定员工的子级 4. 结论 在Oracle数据库中&#xff0c;CONNECT BY、PRIOR和START WITH关键字主要用于处理层次结构数据&#xff0c;例如…...

gateway 整合 spring security oauth2

微服务分布式认证授权方案 在分布式授权系统中&#xff0c;授权服务要独立成一个模块做统一授权&#xff0c;无论客户端是浏览器&#xff0c;app或者第三方&#xff0c;都会在授权服务中获取权限&#xff0c;并通过网关访问资源 OAuth2的四种授权模式 授权码模式 授权服务器将授…...

Unity3D学习FPS游戏(1)获取素材、快速了解三维模型素材(骨骼、网格、动画、Avatar、材质贴图)

前言&#xff1a;最近重拾Unity&#xff0c;准备做个3D的FPS小游戏&#xff0c;这里以官方FPS案例素材作为切入。 导入素材和素材理解 安装Unity新建项目新建文件夹和Scene如何去理解三维模型素材找到模型素材素材预制体结构骨骼和网格材质&#xff08;Material&#xff09;、…...

Eclipse Java 构建路径

Eclipse Java 构建路径 Eclipse 是一款广受欢迎的集成开发环境(IDE),特别适用于 Java 开发。在 Eclipse 中,构建路径(Build Path)是指编译器在编译项目时搜索类(.class)文件和源代码(.java)文件的路径。正确设置构建路径对于确保项目能够顺利编译和运行至关重要。 …...

FileLink跨网文件摆渡系统:重构跨网文件传输新时代

在数字化浪潮的推动下&#xff0c;企业对于数据的高效利用和安全管理提出了前所未有的要求。面对不同网络环境间的文件传输难题&#xff0c;传统方法往往显得力不从心&#xff0c;不仅效率低下&#xff0c;还存在极大的安全隐患。而FileLink跨网文件摆渡系统的出现&#xff0c;…...

macOS下QuickTime player+Blackhole录视频只录制系统声音

Blackhole是一个虚拟的音频驱动程序&#xff0c;免费的 安装方法&#xff1a; 方法1&#xff1a;通过homebrew安装 前提&#xff1a;你的系统中自己安装了homebrew&#xff0c;没有安装用方法2 系统终端执行下面的命令中的一个&#xff1a; brew install blackhole-2ch 或…...

Vscode + EIDE +CortexDebug 调试Stm32(记录)

{// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请访问: https://go.microsoft.com/fwlink/?linkid830387"version": "0.2.0","configurations": [{"cwd": "${workspaceRoot…...

qt QApplication详解

一、概述 QApplication是Qt应用程序的基础类&#xff0c;负责设置和管理应用的环境。它的主要功能包括&#xff1a;初始化应用程序、管理事件循环、处理命令行参数、提供全局设置&#xff08;如样式和调色板&#xff09;以及创建和管理主窗口。通常在main函数中创建QApplicati…...

C++ 图像处理框架

在 C 中&#xff0c;有许多优秀的图像处理框架可以用来进行图像操作、计算机视觉、图像滤波等任务。以下是一些常用的 C 图像处理框架&#xff0c;每个框架都有其独特的特性和适用场景&#xff1a; 1. OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xf…...

基于知识图谱的美食推荐系统

想象一下&#xff0c;每次打开应用&#xff0c;它都能为你量身推荐最符合你口味的美食&#xff0c;不需要再为“今天吃什么&#xff1f;”烦恼。这听起来是不是非常吸引人&#xff1f;今天就给大家介绍一个适合做毕业设计的创新项目——基于知识图谱的美食推荐系统&#xff01;…...

记录:网鼎杯2024赛前热身WEB01

目录扫描&#xff0c;发现上传点&#xff0c;判断可能存在文件上传漏洞&#xff0c;并根据文件后缀判断网站开发语言为php 编写蚁剑一句话木马直接上传 蚁剑连接 这里生成 的flag是随机的&#xff0c;因为烽火台反作弊会随机生成环境&#xff0c;在一顿查找后&#xff0c;在hom…...

java 提示 避免用Apache Beanutils进行属性的copy。

避免用Apache Beanutils进行属性的copy。 Inspection info: 避免用Apache Beanutils进行属性的copy。 说明&#xff1a;Apache BeanUtils性能较差&#xff0c;可以使用其他方案比如Spring BeanUtils, Cglib BeanCopier。 TestObject a new TestObject(); TestObject b new Te…...

autMan框架对接Kook机器人

一、创建kook机器人 KOOK 二、获取机器人token 三、填写autMan参数并重启 四、将机器人加入服务器 五、效果图 回复...

RK3568平台(camera篇)UVC AICamera集成

一.客供AIcamera集成思路 主板端:目前在RK主板上预留了一个USB接口,使用USB接口来连接供应商提供的UVC摄像头。 供应商UVC摄像头:目前供应商提供的usbcamera是rv1126,基于usb接口跟主板端相连接。 其实使用供应商提供的camera,里面的大部分功能供应商已经是做好的,里面…...

【mod分享】极品飞车10魔改模组,全新UI,全新道路,全新建筑,高清植被,全新的道路围栏,全新的天空,体验另一种速度与激情

各位好&#xff0c;今天小编给大家带来一款新的高清重置魔改MOD&#xff0c;本次高清重置的游戏叫《极品飞车10卡本峡谷》。 《极品飞车10&#xff1a;卡本峡谷》该游戏可选择四个模式&#xff1a;生涯、快速比赛、挑战赛、多人连线游戏模式&#xff08;已不可用&#xff09;&…...

[实时计算flink]数据摄入YAML作业快速入门

实时计算Flink版基于Flink CDC&#xff0c;通过开发YAML作业的方式有效地实现了将数据从源端同步到目标端的数据摄入工作。本文介绍如何快速构建一个YAML作业将MySQL库中的所有数据同步到StarRocks中。 前提条件 已创建Flink工作空间&#xff0c;详情请参见开通实时计算Flink版…...

CMOS 图像传感器:像素寻址与信号处理

CMOS image sensor : pixel addressing and signal processing CMOS image sensor 对于寻址和信号处理有三种架构 pixel serial readout and processingcolumn parallel readout and processingpixel parallel readout and processing 其中&#xff0c;图 (b) column paralle…...

React Native 项目使用Expo模拟器运行iOS和Android

iOS没有连接设备&#xff1a; 确保你已经用 USB 线将你的 iOS 设备连接到了你的 Mac。 设备未信任&#xff1a; 如果你的设备是第一次连接到 Mac&#xff0c;可能需要在设备上信任这台计算机。通常&#xff0c;当你连接设备时&#xff0c;设备上会弹出一个对话框&#xff0c;…...

鸿蒙-键盘弹出时 promptAction.showToast 被遮盖

可以设置弹窗显示模式showMode&#xff0c;支持显示在应用之上。 参考代码&#xff1a; promptAction.showToast({ message: Message Info, duration: 2000, showMode: promptAction.ToastShowMode.TOP_MOST }); 文档中心...

Android Wi-Fi 连接失败日志分析

1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分&#xff1a; 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析&#xff1a; CTR…...

PHP和Node.js哪个更爽?

先说结论&#xff0c;rust完胜。 php&#xff1a;laravel&#xff0c;swoole&#xff0c;webman&#xff0c;最开始在苏宁的时候写了几年php&#xff0c;当时觉得php真的是世界上最好的语言&#xff0c;因为当初活在舒适圈里&#xff0c;不愿意跳出来&#xff0c;就好比当初活在…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

ffmpeg(四):滤镜命令

FFmpeg 的滤镜命令是用于音视频处理中的强大工具&#xff0c;可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下&#xff1a; ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜&#xff1a; ffmpeg…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...