1 / 41
文档名称:

第5章交互式技术.ppt

格式:ppt   大小:887KB   页数:41页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

第5章交互式技术.ppt

上传人:孔乙己 2022/6/22 文件大小:887 KB

下载得到文件列表

第5章交互式技术.ppt

相关文档

文档介绍

文档介绍:第5章交互式技术01413
常用的交互技术
一个交互图形系统或图形应用程序,必须允许用户动态的输入坐标,指定选择功能,拾取操作对象,它的顶点开始绘制另一条线段或其他图形,直接使用定位设备来定位很难保证其重合性。
吸附技术可保证用户在定位坐标时只能选择网格上的点,而不能选择网格之间的点,这样就可以克服单纯使用定位设备时无法保证准确性的困难。
CAD(交互式图形)系统分析
计算机图形学绘图基础
可以使用MFC类库(任何时候可以调用Win32函数,最大程度地利用Windows)
与绘图有关的关键类
Document—存储数据
View——观察窗口(OnDraw()函数:“画”的动作)
MainFrame
Application—代表应用程序
(用户启动应用程序时,Windows交用应用程序框架内置的WinMain函数,寻找一个由CWinApp派生的全局构造的应用程序对象)
图形设备接口(Graphic Device Interface :GDI)
管理:
图形设备信息、坐标系和映射模式、绘图当前状态(画笔、画刷、颜色、字体)、绘图具体操作(画线、画圆等)
CGdiObject派生出的对象:
CBitmap
CBrush
CPen
CRgn
CFont
CPalette
VC中(绘图应用程序)最重要的类
CDC(设备环境类)
功能:其成员函数可以用于对设备环境的操作、绘图工具的使用、GDI对象的选择等。例:
CDC *pDC;
pDC ->LineTo(x,y);
先构造一个CDC对象,然后能使用其成员函数,并及时删除(太多了,系统回在调试窗口中报错)
绘图系统设计基本原则
结构层次化
通用性强、使用方便
处理速度快
程序容易:读、查、改、移植、扩充
图形层次结构
一般物体可以分解为不同形体元素的集合,可分层表示:
图形子图形
床 
床架
床头
分层
复杂图形------->简单图形
简单CAD绘图软件功能
基本功能
图形绘制(点、线、多折线、圆/椭圆、圆弧)
颜色、线型改变
文本
图形放大/缩小(重绘)
编辑(删除、复制、移动)
高级功能
Redo/Undo
图层
三维绘图
交互技术的实现(鼠标绘图)
步骤如下:
新建一个MFC单文档工程文件。
创建绘图菜单,并添加3个子菜单。
菜单标题
菜单项标题
菜单项ID
绘图
直线
ID_DRAW_LINE
矩形
ID_DRAW_RECT

ID_DRAW_CIRCLE
3)利用ClassWizard为3个菜单项添加菜单响应函数
4)添加代码
//绘制直线
void CDrawView::OnDrawLine()
{
CDC *pDC=GetDC(); //获得当前窗口的设备上下文
pDC->MoveTo(100,100); //起点
pDC->LineTo(400,400); //终点
}
//绘制矩形
void CDrawView::OnDrawRect()
{
CDC *pDC=GetDC();
pDC->Rectangle(100,100,400,400);
}
//绘制圆
void CDrawView::OnDrawCircle()
{
CDC *pDC=GetDC();
pDC->Ellipse(100,100,300,300);
}
运行结果
在视图类头文件中添加:
//添加以下成员变量
CPoint m_p1,m_p2; //起点和终点
int m_drawcurrent; //当前绘图对象
在构造函数中初始化成员变量。
CDrawView::CDrawView()
{
m_drawcurrent=0;
}
修改原绘图代码:
//绘制直线
void CDrawView::OnDrawLine()
{
m_drawcurrent=1; //直线
}
//绘制矩形
void CDrawView::OnDrawRect()
{
m_drawcurrent=2; //矩形
}
//绘制圆
void CDrawView::OnDrawCircle()
{
m_drawcurrent=3; //圆
}
在OnLButtonDown中添加如下代码:
void CDrawView::OnLButtonDown(UINT nFlags,