VC++60 第十章 绘制图形

VC++图形绘制与交互开发指南:从GDI+到消息循环的硬核实践 在Windows桌面应用开发中,图形绘制与交互是核心基础技术,其底层原理基于消息循环机制与图形设备接口。消息循环作为Windows程序的心脏,负责接收和分发用户输入与系统事件,而GDI/GDI+等图形API则提供了从基础图元到复杂图形的绘制能力。这项技术的核心价值在于实现对系统资源的精细控制与像素级渲染性能,尤其适用于工业控制、科学计算可视化、CAD工具等对响应速度和资源管理有严苛要求的场景。通过双缓冲技术可有效解决图形闪烁问题,结合鼠标键盘消息处理能构建流畅的交互体验。本文以VC++为开发环境,深入探讨了 阅读详情

第十章 绘制图形

 

在窗口面版上绘制图形,方法与画文字一样。VC++的MFC库预制了许多图形的类,如矩形和圆角矩形、椭圆、直线和圆弧等。颜色和线条粗细通过画笔类Cpen来设置。

 

本章要点

1 设置画笔的线条和颜色
2 在指定位置画圆

 

10.1 Graph.exe程序和界面和功能

 

本程序运行时的界面如chap10-01所示,它自动画了一个圆。点击[Draw]按钮可以选择红绿蓝三种颜色重新画圆。

VC++60 <wbr>第十章 <wbr>绘制图形
图chap10-01

 

VC++60 <wbr>第十章 <wbr>绘制图形
图chap10-02

 

10.2 设计应用程序的界面

 

创建工程:在D:\myVC\CH10\建立应用程序Graph。

设计主窗口
主窗口很简单,只要两个按钮,[DRAW]按钮的ID=IDC_DRAW_BUTTON,[EXIT]按钮的ID=IDC_EXIT_BUTTON。主对话框IDD_GRAPH_DIALOG的标题为默认的“Greph”,边界选“可改变大小的”,在Styles页添加system menu, maximize box和 minimaze box。这可使用主窗口能够最大化、最小化和带有系统菜单,虽然在本程序的运行中这不是必要的。

定制颜色对话框
从工作区的资源页添加一个对话框。保留原有的两个按钮,添加一个组框Color和一组单选按钮。其中[红色]的ID =IDC_RED_RADIO,[绿色]的ID =IDC_GREEN_RADIO,[蓝色]的ID=IDC_BLUE_RADIO。[红色]按钮在属性中选定Group属性,其余两个“不选中”(为什么?)最后,把对话框的ID设置为IDD_COLOR_DIALOG,标题为“设置颜色”。

为颜色对话框建立类和关联
打开类向导,在弹出的添加类的对话框中选"Create a new class",类名=CColorDlg。
为单选按钮组添加变量int m_RedRadio;在对话框类的构造函数中把变量初始化为     m_RedRadio =0。在主窗口的构造函数中创建一个颜色对话框的对象CColorDlg m_dlg。现在可以编译一下,下面开始编写代码。

 

10.3 编写绘图代码

 

在OnPaint()函数中编写画圆的代码。
    else
    {
       //My code start here
       CClientDC dc(this);
        CPen MyPen;
        //Create a new pen
        switch(m_dlg.m_RedRadio){
        case 0 :
            MyPen.CreatePen(PS_SOLID, 2, RGB(255,0,0));
            break;CClientDC
        case 1 :
            MyPen.CreatePen(PS_SOLID, 2, RGB(0, 255,0));
            break;
        case 2 :
            MyPen.CreatePen(PS_SOLID, 2, RGB(0, 0, 255));
            break;
        default :
            MyPen.CreatePen(PS_SOLID, 2, RGB(0, 0, 0));
            break;
        }
        //Select new pen ,save old pen
        CPen* pOriginalPen = dc.SelectObject(&MyPen);

        //Draw a Circle
        CRect myRectangle(20,20,300,300);
        dc.Ellipse(&myRectangle);
        //Restire old pen
        dc.SelectObject(&pOriginalPen);

        CDialog::OnPaint();
    }

本段代码写在else部分,前两句创建一个用户区图形设备环境对象CClientDC,再创建 一个画笔对象MyPen。下面用CreatePen()函数设置画笔的属性,三个参数分别是线条类型,线条粗细和RGB类型的颜色对象。线条类型用符号常量PS_SOLID表示实线,其他选择很多但却很罕用。RGB对象参考上一章。
根据变量m_dlg.m_RedRadio带回来的值确定创建什么样的画笔。接着用dc的SelectObject()函数选用新画笔,该函数返回当前画笔对象(的指针),我们把它保存到pOriginalPen中。完成工作后再用SelectObject()函数恢复原画笔。
为了使[Draw]按钮能够打开颜色对话框和重画,需要添加两行代码:
    m_dlg.DoModal();
    OnPaint();

完了。现在可以编译和运行了。

—END—

VC++股票分析系统:从数据采集到K线绘制的完整实现 在金融数据分析领域,技术指标计算与可视化呈现是核心需求。其原理在于通过算法处理历史交易数据,生成如移动平均线(MA)、MACD等指标,辅助市场趋势分析。这项技术的价值在于将抽象数据转化为直观图表,提升决策效率。应用场景广泛,包括量化交易、投资研究等。本文以VC++与MFC框架为基础,详细拆解了一个完整的股票分析系统,涵盖网络数据采集、SQLite数据库存储、指标计算引擎等模块。其中,MFC框架下的GDI绘图技术实现了高效的K线图渲染,而模块化设计则保证了系统的可扩展性。通过这个项目,开发者可以深入理解Win 阅读详情

相关推荐

图解VC++绘制数学曲线

工具: http://blog.csdn.net/bcbobo21cn/article/details/44200205 demo工程: http://pan.baidu.com/s/1kVEkDnT 1 新建单文档MFC exe 工程 2 添加菜单和菜单的消息处理函数 3 按下图代码运行,啥也没画出来; 下断点

bcbobo21cn的专栏 1万+

基于VC++6.0实现直方图的绘制

由于图形能直观地反映各种数据的变化。某班某课程的学生成绩分布图,它是一个直方图,用来依次反映<60、60~69、70~89 以及>90各分数段中的人数,希望通过编程实现这样的成绩分布直方图。CEx DrawView::OnDraw,在 CEx DrawView::OnDraw 中添加下列绘制代码。【提醒:在此基础进行修改时要特别注意相关函数字母的大小写,报错主要在这个地方】创建一个默认的单文档应用程序。Class View页面双击。

weixin_52308622的博客 570

VC++绘制铁路道岔

绘制代码; void CDaocaView::OnDraw(CDC* pDC) { CDaocaDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here COLORREF DaoChaColor= RGB(0,0,0); int width = m_rect.Width() ; int height = m_rect.Height() ; CPen newpen(

bcbobo21cn的专栏 381

VC画圆

用CDC画椭圆实现,圆是特殊的椭圆而已。void DrawCircle(CDC* pDC,CRect rect){   int cx,cy;   if (rect.right   {     cx = rect.left;     rect.left = re

极简Qt 1万+

计算机图形学基础实验与VC++实现

计算机图形学(Computer Graphics, CG)是研究如何利用计算机生成、处理和显示图形图像的学科,其核心在于将几何模型转化为可视化的二维或三维图像。自20世纪60年代起步以来,图形学已广泛应用于游戏开发、影视特效、虚拟现实、CAD设计、医学影像等领域。本章将从图形学的基本概念入手,解析光栅化过程、几何变换原理及图形绘制流程,帮助读者建立图形渲染的基础认知体系,为后续算法实现与VC++开发实践提供理论支撑。// 边的上下端点y坐标float x;// 当前扫描线对应的x坐标。

weixin_42602241的博客 769

实现MFC金刚石图案算法的图形学课程设计

图形学作为计算机科学的一个重要分支,涉及计算机图形图像的生成、处理与显示。从基本的点、线、面元素绘制到复杂的3D渲染与动画技术,图形学为模拟现实世界提供了基础。在本章中,我们将深入了解图形学的基本概念、发展历程以及在不同领域的应用,为读者打下坚实的理论基础。MFC(Microsoft Foundation Classes)是微软公司提供的一套用于开发Windows应用程序的C++类库。MFC封装了Windows API,使得开发者可以更加方便地在Windows平台上创建丰富的图形用户界面。

weixin_30838971的博客 914

VC++,6.0 MFC设计--- 图形界面

控制用的软件还是很早的vC++ 6.0, 为了先应用,就先在上面设计了,我需要做得很少目标:做轨迹演示图形界面,轨迹类型--圆,直线之前上过C语言,做过课设,MFC 方面还是不太会上手,先搜索吧一个系列有用博文,MFC 绘图函数:https://blog.csdn.net/eastmount/article/details/53180524这篇博文是在单文档中进行MFC设计,而我要在基本对话中使用...

weixin_37665577的博客 2万+

VC++ CEDIT控件重绘,插入背景图

VC++重绘CEDIT控件,在控件里面插入背景图,可以直接用EVC VS2008打开,

孙鑫VC++第四章 2.简单绘图-绘制

简单绘图

qq_38446366的博客 1992

使用vc6.0绘制实时曲线

使用vc6绘制实时曲线,时间为横轴,随机数为纵轴的

VC++ 6.0 线程实现实时动态曲线绘制

VC++ 6.0 线程实现实时动态曲线绘制,数据用随机函数模拟,在工程项目源程序的基础上略加修改而成,有一定实用价值。

VC++6.0 MFC窗口中移动的圆

这个例子我们创建一个MFC单文档视图窗口,在窗口屏幕上绘制一个移动的填充色为蓝色的圆。 步骤: 1、利用VC++6.0的AppWizard创建一个单文档视图,命名为MovingBall 2、在ClassWizard中找到CMovingBallView类,并双击其中的OnDraw(CDC *pDC)函数,编辑该函数:  //在该函数末尾添加如下: SetMapMode(pDC->m_hDC

hushiwei1993的专栏 2277

Spring AI 实战:5 分钟搭建你的第一个 AI 应用(含完整代码)

能力关键 API适用场景基础对话简单问答、文本生成流式输出实时打字机效果@Bean模型需要调用外部工具结构化输出需要返回 Java 对象多轮对话聊天机器人场景Spring AI 让 Java 开发者可以用最熟悉的方式(Spring Boot + Maven)进入 AI 应用开发领域,不用学新语言,不用换框架,这是它最大的优势。但目前为止,我们的 AI 应用只能回答"它脑子里已有的知识"。如果让它读懂你自己的技术文档、公司内部知识库呢?这就是下一篇文章的主题——RAG(检索增强生成)实战。

qq_17204557的博客 644

VC++常用功能开发

系列文章目录 第一章:VC++ ini配置文件封装类源代码 第二章:VC++实现二维码(显示+保存图片)功能源代码 第三章:VC++ 调节系统音量(与任务栏音量同步)源代码 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启..

Keivin 17万+

拆解爆火AI图文日报!用扣子(Coze)工作流,10分钟实现自动化新闻早报

当用户提供一则新闻内容时,仔细分析新闻中的关键信息。提取新闻事件的核心要点,包括事件主体、发生时间、地点、主要情节等。用简洁的语言对新闻进行总结,控制在[X]字以内(可根据实际需求设定字数限制)。若用户提供多条新闻,对比各新闻之间的异同点。从事件类型、影响范围、发展趋势等方面进行分析。综合总结多条新闻的整体情况,以有条理的方式呈现给用户。

一身都是月 2426

SAP ALV表格F4搜索帮助不触发DATA_CHANGE?3步排查搞定

本文针对SAP ALV表格中F4搜索帮助选择值后,DATA_CHANGE事件不触发的经典问题,提供了三步系统性排查方法。核心在于理解F4值回写机制,并需在事件处理中手动填充修改表以通知ALV控件数据变更,从而确保后续校验、自动计算等依赖DATA_CHANGE的逻辑能正常执行。

c2d3e4f的博客 1133

VC++ MFC 画图 详解(附源码)

(1)新建 MFC aplication exe 文件:painttool(2)在CPaintoo1View类的 OnDraw方法 添加如下代码:画图程序:Code: void CPaintoo1View::OnDraw(CDC* pDC)   {       CPaintoo1Doc* pDoc = GetDocument();  

jxusthusiwen的专栏 8225

DeepSeek 在 PostgreSQL 中,执行 `DELETE` 操作后,数据占用的空间并不会立即释放给操作系统

操作后,数据占用的空间并不会立即释放给操作系统。这是 PostgreSQL 的 MVCC(多版本并发控制)机制决定的——删除的数据只是被标记为“死元组”,物理空间仍然被表占用。这是最彻底的释放方式,会将表重写为一个没有空洞的新文件,将空间返回给操作系统。如果你的表非常大(如几百GB),或者这是生产环境的核心表,建议优先考虑。你可以告诉我你的表大概多大、是否能接受锁表,我可以给你更精确的建议。要真正释放空间,需要根据你的实际需求,从以下三种方案中选择一种。如果你既想彻底释放空间,又无法接受锁表,

m0_37843156的博客 404

VC++6.0中文的安装和配置EasyX、FileTool

刚开始学习计算机图形学,先是配置环境,安装VC++6.0及配置EasyX和FileTool 首先先下载VC++6.0 网盘链接:https://pan.baidu.com/s/1K37GLEb7RXhU6xrVq-xE7Q 然后解压后打开 然后下一步下一步选目录,然后就安装完成。 接着就是配置EasyX和FileTool了 网盘链接:https://pan.baidu.com/s/1yFqij...

qq_41698119的博客 7070

ShardingSphere 5.3 系列Spring 配置升级指南 | Spring Cloud 47

在 `5.3.0` 版本以前,`ShardingSphere-JDBC` 同时支持 `Java API`、`YAML`、`Spring Boot Starter` 和 `Spring Namespace` 等配置方式。 - 当新增或更新 API 时,需要调整多项配置文件,工作量大 - 社区需要维护多重配置文档和示例 - `Spring Bean` 生命周期管理容易受到项目其他依赖的影响,比如 `PostProcessor` 无法正常执行 - `Spring Boot Starter` 和 `Spring N

gmHappy 2万+

ABB变频器使用PROFINET IO通信模块时的激活方法

ABB变频器使用PROFINET IO通信模块时的激活方法

Robot_PLC_HMI_Automation 2734

VC++与GDI+图形编程:从核心原理到实战应用

在Windows桌面应用开发中,图形编程是实现数据可视化、界面美化和图像处理的基础能力。其核心原理在于通过图形设备接口与系统显示硬件进行交互,将抽象的绘图指令转化为屏幕上的像素。GDI+作为Windows平台经典的2D图形API,在易用性和功能丰富性之间取得了良好平衡,它提供了面向对象的编程模型,支持抗锯齿、渐变、透明混合等高级特性,显著提升了开发效率。从技术价值看,GDI+与VC++环境深度集成,能够充分发挥Windows原生特性,适合开发轻量级、高性能的桌面工具、工业控制软件和图形编辑器。在实际应用场景

cuiji1279的博客 360

Amazon SES 移出沙盒完整指南 & 高通过率模板

AWS SES沙盒模式转正式模式申请指南 申请正式模式需通过AWS审核,常见被拒原因包括邮件用途不清晰、缺少退订机制或发送量不合理。人工申诉需登录AWS Support Center提交服务限额提升请求,填写详细的公司信息、邮件用途及合规措施。 高通过率申诉模板需包含: 公司信息:名称、网址及与AWS的合作情况。 邮件规范:明确类型(交易/营销)、退订链接及退信处理机制。 发送计划:合理预估发送量,确保合规。 关键点:真实信息、用途清晰、退订机制完善、发送量合理。首次被拒可修改后重新提交。

xianyinsuifeng的博客 328

C语言绘制哆啦A梦

用C语言绘制哆啦A梦 一、在电脑上安装C/C++编译器- -VC++ 6.0 百度网盘提取链接: https://pan.baidu.com/s/1i0e9p_a1Zqu0CMjPN0NBYQ 提取码:1314 二、为编译器安装EasyX库 EasyX官网下载链接:https://easyx.cn/download 本人下载的是:EasyX_20200902版本 然后选择自己使用的VS版本进行安装,主流的VS版本这里都有了 安装完之后就可以开心地玩啦~ EasyX图形库使用说明:https://docs.

Black_黑色的博客 8285

YOLO26训练自己的数据集,从代码下载到实例测试 (含YOLO26网络结构图)

在Windows10上配置CUDA环境教程2026年1月14日,YOLO26是最新发布的计算机视觉模型。支持多种任务,包括目标检测、实例分割、图像分类、姿态估计、有向目标检测以及物体跟踪等。以上就是YOLO26训练自己数据集的全部过程啦,欢迎大家在评论区交流~

Limiiiing的博客 6507

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC++控制台图形化编程:从EasyX到原生API实现炫彩时钟

在Windows编程中,控制台应用程序通常被视为简单的命令行工具,主要用于文本输入输出。然而,通过深入理解Windows图形设备接口(GDI)和控制台API,开发者可以突破这一限制,实现丰富的图形界面效果。其核心原理在于利用系统提供的底层绘图函数或直接操作控制台缓冲区,将像素或字符网格作为画布进行渲染。这项技术的价值在于,它能够在无需复杂GUI框架的情况下,为传统控制台程序添加可视化元素,提升用户体验,同时加深对Windows系统绘图机制和实时动画循环的理解。典型的应用场景包括开发轻量级系统监控工具、终端游

weixin_33811539的博客 376

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: VC++60 第九章 在窗体上写字
下一篇: VC++60 第十一章 显示位图
GL_a_
博客等级 码龄11年 29粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值