c语言vc绘图,VC++绘图编程教程
设备环境介绍(Device Context,DC)
设备描述表或设备上下文,是一种Windows的数据结构。
在这个结构中保存了一些在绘图操作中使用的重要属性的参数,还包含了与图形输出设备的绘制属性有关的信息。
在Windows图形编程中,所有的绘图操作都是通过设备环境进行的。
设备环境可以用来向屏幕、打印机、图形文件或内存位图输出结果。
CDC(Class of Device-Context )类。
CDC类提供了大量的绘图函数、坐标映射函数、裁剪函数,可以通过这个类来方便地实现图形显示。
还有一些特殊的设备环境类都是从CDC类派生出来的。
MFC程序绘图的方法
在MFC应用程序中,一般情况下,很多绘图操作都是在视类的OnDraw()成员函数中进行的.
OnDraw()函数参数中自动有一个CDC的指针pDC,利用pDC调用CDC类的成员函数完成绘图操作。
另外,当用户需要立即绘制图像时,可以通过调用更新窗口函数Invalidate()使Windows送出WM_PAINT消息自动调用OnDraw()函数来重绘图形
坐标系统
1. 设备坐标系统
x轴自左至右,y轴从上到下,坐标原点在屏幕左上角
2. 逻辑坐标系统
坐标为自下而上,坐标原点在屏幕左下角
在窗口用户区绘图
在OnDraw()函数中用参数CView类的指针pDC在屏幕上绘图:
以画线为例
void CImageView::OnDraw(CDC* pDC)
{
CImageDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
pDC->MoveTo(20,10);
pDC->LineTo(200,100);
}
演示程序:
画笔与线条图的绘制
画笔用来绘制直线、曲线以及各种几何图形轮廓等线条。
线条除了有颜色特性外,还有风格与宽度等特征
(1)创建新画笔对象
CPen penBlue(PS_SOLID,5,RGB(0,0,255));
(2)把新画笔选进设备环境 ,同时保存系统原有画笔
pOldPen=pDC->SelectObject(&penBlue);
(3)用新画笔绘图
调用各种成员函数进行绘图
(4)把系统原有画笔选进设备环境
pDC->SelectObject(pOldPen);
(5)删除新画笔
penBlue.DeleteObject()
CDC::SelectObject()
Selects an object into the device context. The newly selected object replaces the previous object of the same type
Return Value
A pointer to the object being replaced.
绘制线条
移动画笔位置
用CDC成员函数MoveTo()
pDC->MoveTo(x1,y1) ;
绘制直线
用CDC成员函数LineTo()
pDC->LineTo(x2,y2) ;
演示程序:
在OnDraw函数中绘制线条
用笔(CPen对象)绘制宽度为5点红色的实线
void CImageView::OnDraw(CDC* pDC)
{
…
CPen penBlue(PS_SOLID,5,RGB(255,0,0)),*pOldPen;
pOldPen=pDC->SelectObject(&penBlue);
pDC->MoveTo(20,10);
pDC->LineTo(200,100);
pDC->SelectObject(pOldPen);
penBlue.DeleteObject();
}
。。。。。。
原文档PPT下载:
VC++绘图编程.rar [登录雪炭网后可见]
版权声明:
作者信息(Author) :雪炭网 : 柳岸花明
原文链接(Hyperlink):https://snowcoal.com/article/877.html
原创内容,尊重版权,转载需注明出处;商业及其他特殊用途转载需原作者同意。
c语言vc绘图,VC++绘图编程教程相关推荐
- ∑ n!(1! 2!)用c语言怎么编,数控车床编程教程,图文实例详解!
原标题:数控车床编程教程,图文实例详解! 第一节数控车床编程基础 一.数控车编程特点 (1) 可以采用绝对值编程(用X.Z表示).增量值编程(用U.W表示)或者二者混合编程. (2) 直径方向(X方向 ...
- VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序)
VC6.0(VC++6.0)使用教程(使用VC6.0编写C语言程序) Visual C++ 6.0简称VC或者VC6.0,是微软1998年推出的一款C/C++ IDE,界面友好,调试功能强大.VC6. ...
- matlab的矩阵编译器,MATLAB引擎方式实现VC与MATLAB混合编程
VS2008是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快.但在科学计算方面函数库显得不够丰富.读取.显示数据图形不方便.Matlab是一款将数值分析.矩阵计算.信号处理和图形显 ...
- 总结:m文件转化为c/c++语言文件,VC编译
fork (撒哈拉沙漠的沙) 于 Thu Dec 4 00:56:56 2003 说道: 发信人: fork (撒哈拉沙漠的沙), 信区: Matlab 标 题: 总 ...
- vc与matlab联合,浅析VC与Matlab联合编程(二) - VC知识库文章
浅析VC与Matlab联合编程(二) 作者:邓科 下载源代码 在"浅析VC与Matlab联合编程 (一)"中简单介绍了VC与matcom的接口编程,实现了VC调用matcom的一个 ...
- 用Python串口实时显示数据并绘图pyqtgraph(详细教程)
用Python串口实时显示数据并绘图 使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 &qu ...
- 使用Keil语言的嵌入式C编程教程(下)
使用Keil语言的嵌入式C编程教程(下) 用8051单片机进行定时器/计数器的计算与编程 延迟是应用软件开发中的重要因素之一.然而,在实现定时延迟的过程中,正常的延迟并不能给出克服这一问题的宝贵结果. ...
- 使用Keil语言的嵌入式C编程教程(上)
使用Keil语言的嵌入式C编程教程(上) Embedded C Programming Tutorial with Keil Language Embedded System 嵌入式系统是指以单片机为 ...
- r语言导入ggplot2_R语言 可视化之三大绘图系统概述:base、lattice和ggplot2 | 第7讲...
原文:R语言 可视化之三大绘图系统概述:base.lattice和ggplot2 | 第7讲 原创: 拴小林 数据驱动实践 1周前 数据可视化是数据分析过程中探索性分析的一部分内容,可以直观展示数据集 ...
- VC++下命名管道编程的原理及实现
概述 管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机.命名管道(Named Pipes)是在管道服务器和一台或多台管道客户机之间进行 ...
最新文章
- 使用python爬取视频
- 几种常用 JSON 库性能比较
- 电力系统分析课设短路电流计算simulink仿真
- 容器学习 之 安装docker(二)
- vue的鼠标移入和移出
- 前端学习(3108):react-hello-组件和模块
- 在保存Bitmap的时候出现“GDI出现一般性错误”
- 你看到过哪些简短有内涵的一看就想发朋友圈的句子?
- Net设计模式实例之观察者模式(Observer Pattern)
- ZOJ3778 Talented Chef(贪心)
- iOS开发总结——项目目录结构
- 个人展示-LICHUNHUI
- hadoop安装及简单的使用
- 六子棋人机程序Java版(附源码+设计思路)
- 如何选择物联网服务商
- HDU 6184 Counting Stars(分块)
- 王家林Spark 课程,蘑菇云,IMF真相
- PyQt(Python+Qt)学习随笔:Model中项的标记flags取值及枚举类型Qt.ItemFlag
- 学习QT之调色板(QPalette)
- 洛必达法则的一种极简证明
热门文章
- 《Unsupervised Part-based Weighting Aggregation of Deep Convolutional Features for Image Retrieval》笔记
- 生成Xcode中各个尺寸的Mac App Icon
- 企业财务制度二--会计科目名称和编号(一)1291 分期收款发出商品(转载)
- Oracle SQL
- 计算机ppt以学校生活为主题的作文,以校园生活为话题的作文
- html返回顶部按钮图片,goToTop(回到顶部)按钮的制作
- 【从零开始玩量化7】easyTrader: 自动化(程序化)交易利器
- vim etc mysql my.cnf_mysql配置——my.cnf配置讲解
- vbox虚拟机与主机互传文件的四种方法
- 小程序{errcode:40029,errmsg:invalid code, hints: [ req_id: 8H_oSa0564ns12 ]}