设备环境介绍(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++绘图编程教程相关推荐

  1. ∑ n!(1! 2!)用c语言怎么编,数控车床编程教程,图文实例详解!

    原标题:数控车床编程教程,图文实例详解! 第一节数控车床编程基础 一.数控车编程特点 (1) 可以采用绝对值编程(用X.Z表示).增量值编程(用U.W表示)或者二者混合编程. (2) 直径方向(X方向 ...

  2. 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. ...

  3. matlab的矩阵编译器,MATLAB引擎方式实现VC与MATLAB混合编程

    VS2008是当前主流的应用程序开发环境之一,开发环境强大,开发的程序执行速度快.但在科学计算方面函数库显得不够丰富.读取.显示数据图形不方便.Matlab是一款将数值分析.矩阵计算.信号处理和图形显 ...

  4. 总结:m文件转化为c/c++语言文件,VC编译

    fork (撒哈拉沙漠的沙)                于 Thu Dec  4 00:56:56 2003 说道: 发信人: fork (撒哈拉沙漠的沙), 信区: Matlab 标  题: 总 ...

  5. vc与matlab联合,浅析VC与Matlab联合编程(二) - VC知识库文章

    浅析VC与Matlab联合编程(二) 作者:邓科 下载源代码 在"浅析VC与Matlab联合编程 (一)"中简单介绍了VC与matcom的接口编程,实现了VC调用matcom的一个 ...

  6. 用Python串口实时显示数据并绘图pyqtgraph(详细教程)

    用Python串口实时显示数据并绘图 使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 &qu ...

  7. 使用Keil语言的嵌入式C编程教程(下)

    使用Keil语言的嵌入式C编程教程(下) 用8051单片机进行定时器/计数器的计算与编程 延迟是应用软件开发中的重要因素之一.然而,在实现定时延迟的过程中,正常的延迟并不能给出克服这一问题的宝贵结果. ...

  8. 使用Keil语言的嵌入式C编程教程(上)

    使用Keil语言的嵌入式C编程教程(上) Embedded C Programming Tutorial with Keil Language Embedded System 嵌入式系统是指以单片机为 ...

  9. r语言导入ggplot2_R语言 可视化之三大绘图系统概述:base、lattice和ggplot2 | 第7讲...

    原文:R语言 可视化之三大绘图系统概述:base.lattice和ggplot2 | 第7讲 原创: 拴小林 数据驱动实践 1周前 数据可视化是数据分析过程中探索性分析的一部分内容,可以直观展示数据集 ...

  10. VC++下命名管道编程的原理及实现

    概述 管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机.命名管道(Named Pipes)是在管道服务器和一台或多台管道客户机之间进行 ...

最新文章

  1. 使用python爬取视频
  2. 几种常用 JSON 库性能比较
  3. 电力系统分析课设短路电流计算simulink仿真
  4. 容器学习 之 安装docker(二)
  5. vue的鼠标移入和移出
  6. 前端学习(3108):react-hello-组件和模块
  7. 在保存Bitmap的时候出现“GDI出现一般性错误”
  8. 你看到过哪些简短有内涵的一看就想发朋友圈的句子?
  9. Net设计模式实例之观察者模式(Observer Pattern)
  10. ZOJ3778 Talented Chef(贪心)
  11. iOS开发总结——项目目录结构
  12. 个人展示-LICHUNHUI
  13. hadoop安装及简单的使用
  14. 六子棋人机程序Java版(附源码+设计思路)
  15. 如何选择物联网服务商
  16. HDU 6184 Counting Stars(分块)
  17. 王家林Spark 课程,蘑菇云,IMF真相
  18. PyQt(Python+Qt)学习随笔:Model中项的标记flags取值及枚举类型Qt.ItemFlag
  19. 学习QT之调色板(QPalette)
  20. 洛必达法则的一种极简证明

热门文章

  1. 《Unsupervised Part-based Weighting Aggregation of Deep Convolutional Features for Image Retrieval》笔记
  2. 生成Xcode中各个尺寸的Mac App Icon
  3. 企业财务制度二--会计科目名称和编号(一)1291 分期收款发出商品(转载)
  4. Oracle SQL
  5. 计算机ppt以学校生活为主题的作文,以校园生活为话题的作文
  6. html返回顶部按钮图片,goToTop(回到顶部)按钮的制作
  7. 【从零开始玩量化7】easyTrader: 自动化(程序化)交易利器
  8. vim etc mysql my.cnf_mysql配置——my.cnf配置讲解
  9. vbox虚拟机与主机互传文件的四种方法
  10. 小程序{errcode:40029,errmsg:invalid code, hints: [ req_id: 8H_oSa0564ns12 ]}