计算机图形学--映射模式

将图形显示在屏幕坐标系中的过程称为映射,映射模式分为逻辑坐标和设备坐标。逻辑坐标单位时米制尺度,设备坐标单位是像素。默认情况使用设备坐标系,一个设备坐标等于一个像素,像素的物理大小随设备的不同而不同,设备坐标系原点位于客户区的左上角,x轴水平向右,y轴垂直向下,设备坐标基本单位为一个像素。

“窗口”与“视区”的概念。“窗口”理解为一种逻辑坐标系下的矩形区域,“视区”是设备坐标系下的矩形区域。x方向和y方向的比例因子:x方向比例因子=视区cx / 窗口cx, y方向比例因子=视区cy / 窗口cy 。如果设置SetWindowExt(100,100),SetViewportExt(200,200),则x方向和y方向的比例因子都为2,说明窗口的一个逻辑坐标映射为视区的两个像素。

void CTestView::OnDraw(CDC* pDC){

CTestDoc * pDoc = GetDocument();

CRect rect;  //声明CRect类矩形对象

GetClientRect(&rect);  //使用CWnd类的成员函数GetClientRect(LPRECT lpRect)获得客户区大小

pDC->SetMapMode(MM_ANISOTROPIC);  //设置映射模式为MM_ANISOTROPIC

PDC->SetWindowExt(rect.Width(),rect.Height());  //设置窗口

pDC->SetViewportExt(rect.Width(),-rect.Height());  //设置视区:x轴水平向右,y轴垂直向下

pDC->SetViewportOrg(rect.width()/2,rect.Heigth()/2);  //客户区中心为坐标系原点

}




绘制直线段函数:

MoveTo()和LineTo()函数

每次绘制直线段都是以当前位置为起点,直线段绘制结束后,直线段的终点又成为当前位置。

设置当前位置函数:CDC::MoveTo

原型:

CPoint MoveTo(int x,int y);

CPoint MoveTo(POINT point);

绘制直线段函数:CDC::LineTo

原型:

BOOL LineTo(int x,int y);

BOOL LineTo(POINT point);

举例:

void CTestView::OnDraw(CDC * pDC)

{

CTestCoc * pDoc = GetDocument();

CRect rect;

GetClientRect(&rect);

pDC->SetMapMode(MM_ANISOTROPIC);  //设置映射模式为MM_ANISOTROPIC

PDC->SetWindowExt(rect.Width(),rect.Height());  //设置窗口

pDC->SetViewportExt(rect.Width(),-rect.Height());  //设置视区:x轴水平向右,y轴垂直向下

pDC->SetViewportOrg(rect.width()/2,rect.Heigth()/2);  //客户区中心为坐标系原点

CPoint p0(-100,-50),p1(100,50);

Cpen NewPen,*pOldPen;

NewPen.CreatePen(PS_SOLID,1,RGB(0,0,255));

pOldPen = pDC->SelectObject(&NewPen);

pDC->MoveTo(p0);

pDC->LineTo(p1);

pDC->SelectObject(pOldPen);

}




在MFC框架中输出图形和文本,如果不在OnDraw()函数中输出,则首先需要获得设备上下文,然后才能调用相应的CDC类的成员函数回吐。在任何时刻最多获得5个设备上下文,所以绘图完成后应释放所获得的设备上下文。

CDC* GetDC();

如果调用成功,返回当前屏幕客户去的设备上下文指针,否则,返回NULL

int ReleaseDC(CDC* pDC);

pDC是被释放的设备上下文指针,如果调用成功,返回“非0”,否则,返回“0”。

时间: 2024-10-13 07:24:11

计算机图形学--映射模式的相关文章

计算机图形学名词解释

转自 http://blog.csdn.net/lwfcgz/article/details/39254743 3D三维(three dimension).客观世界中静止的物体都是三维的,在计算机图形学中常在一定的坐标系中用(x,y,z)坐标系列表示物体. 3D modeling3D建模.用三维坐标来描述物体的形状.在各种计算机图形应用领域中有不同的三维建模方法,用不同的算法来描述这些领域中的物体和对象. 3D transformation3D变换.在三维空间中把物体的三维坐标从一个位置变换至另

计算机图形学 复习笔记

计算机图形学 复习笔记 (个人整理,仅做复习用 :D,转载注明出处:http://blog.csdn.net/hcbbt/article/details/42779341) 第一章 计算机图形学综述 研究内容 图形的概念:计算机图形学的研究对象 能在人的视觉系统中产生视觉印象的客观对象 包括自然景物.拍摄到的图片.用数学方法描述的图形等等 图形的要素 几何要素:刻画对象的轮廓.形状等 非几何要素:刻画对象的颜色.材质等 图形表示法 点阵表示 枚举出图形中所有的点,简称为图像. 参数表示 由图形的

【转载】计算机图形学框架

原文: 计算机图形学框架 应用 基本图形生成算法 图元光栅化标准 直线要直 图元终点要准 图元生成的亮度.色泽粗细要均匀 快速计算 直线光栅化算法 逐点比较法 数值微分法 中点Bresenham算法 圆的光栅化算法 简单方程产生圆弧 Bresenham算法产生圆弧 多边形填充 扫描线填充 宽图元 复制像素画宽图元 移动画笔画宽图元 3D数学基础 坐标系 向量 矩阵 空间集合运算 集合形体的表达 几何体之间的关系 图形变换 二维及三维图形几何变换 二维图形几何变换 平移变换 比例变换 旋转变换 错

学习shader之前必须知道的东西之计算机图形学(一)渲染管线

引言 shader到底是干什么用的?shader的工作原理是什么? 其实当我们对这个问题还很懵懂的时候,就已经开始急不可耐的要四处搜寻有关shader的资料,恨不得立刻上手写一个出来.但看了一些资料甚至看了不少cg的语法之后,我们还是很迷茫,UNITY_MATRIX_MVP到底是个什么矩阵?它和v.vertex相乘出来的又是什么玩意?当这些问题困扰我们很久之后,我们才发现,原来我们是站在浮沙上筑高台,根基都没有打牢当然不可能盖得起高楼大厦了. 那根基是什么呢?大牛曰,计算机图形学. shader

3D计算机图形学零起点全攻略(转)

3D计算机图形学零起点全攻略 这篇文章不包含任何技术知识,但我的希望它能指明一条从零开始通往3D领域的成功之路.我将罗列我看过的相关经典书籍作为学习文献,阅读规则是每进入下个内容,我都会假设已经完成前面全部的文献研习内容.相信若能按照这条路走到最后,会有所进益. 完成整部分内容需要具备基础: 英语:CET4以上 数学:精通数字加减乘除法. 物理:基本力学. 计算机:了解电脑的基本知识,熟练使用Windows. 电脑配置: CPU:双核1.5以上 显卡:NVIDIA GeForce8400G MS

【计算机图形学】OpenGL+VS2015相关类库配置

1 WiKi OpenGL一直是事实上的计算机图形学标准,截止2016年06月,OpenGL版本已经更新到4.5.不过DirectX发展迅速,大有OpenGL落后的态势,知乎上的该话题的讨论:https://www.zhihu.com/question/23241456.所以OpenGL为了追赶DirectX,推出 了glNext(Vulkan API),相关讨论https://www.zhihu.com/question/28039310. 2 相关资料 图形学的经典书籍是<Computer

《交互式计算机图形学 基於OpenGL着色器的自顶向下方法(第6版) 》代码运行问题及其解决

上一篇文章,笔者提到了红宝书第8版的代码编译运行问题,想必大家已经知道我看过红宝书了. 然而,笔者竟然看不懂,这是因为笔者并不知道OpenGL的历史.原来有古代OpenGL和现代OpenGL之分,古代OpenGL使用固定功能管线,现在已经被废弃(尽管还能用),而现代使用可编程管线. 由于笔者在网上搜索一通,见到怎么OpenGL的代码有两种风格,到了现在才搞懂.原来OpenGL在第8版之前都是讲的固定功能管线,到了第8版立即转成了可编程管线.然而红宝书已经认定了你有一定的计算机图形学基础,因此介绍

计算机图形学第四章练习——画饼图

计算机图形学第四章后边示例代码里有一段画饼图的练习,画出来是这样的 中间有一段中心画圆法未实现,搜集了网上资料补全并执行了这段代码,作为openGL的学习练习 #include <GL/glut.h> #include <stdlib.h> #include <math.h> GLsizei winWidth = 400, winHeight = 300; const GLdouble twoPi = 6.283185; class scrPt { public: GL

计算机图形学1——绪论

第一讲 绪论 一.图形学的概念 计算机图形学:计算机图形学(CG,Computer Graphics)是研究怎样利用计算机来显示.生成和处理图形的原理.方法和技术的一门学科. 能够在人的视觉系统中形成视觉印象的客观对象称为图形.eg:自然景物 图片.照片 工程图 美术绘图 数学方程描述的图形. 图形的要素:图形=图+形 形(几何要素):点.线.面.体 图(非几何要素):颜色.亮度 计算机图形学研究的图形对象:从客观世界物体中抽象出来的颜色(图)及形状(形)信息. 图形在计算机中的表示方法: 点阵