毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

图形图像处理论文 第2页

更新时间:2009-3-26:  来源:毕业论文
图形图像处理论文 第2页
8.2 绘图设备类
8.2.4 CFont类及创建CFont类对象的方法
CFont类是CGdiObject类的一个派生类,它封装了逻辑字体及方法。
8.2.4.1 创建CFont对象
CFont类只有一个构造函数,在定义了一个CFont类对象之后,必须用成员函数CreateFont或CreateFontIndirect来初始化CFont对象的参数。
CreateFont函数的参数非常多,可查阅MSDN。
8.2 绘图设备类
8.2.4.2在设备环境中选入字体
下面介绍创建CFont对象和在设备环境中选入字体的过程。void CDrawView::OnDraw(CDC * pDC)
{
Cfont font;
font.CreateFont(30,15,0,0,200,0,0,0,255,0,0,2,DEFAULT_PITCH,”VC”);
CFont* pOldFont= pDC->SelectObject(&font);
……//省略进行文字绘制的部分
pDC->SelectObject(pOldFont);
}

8.2 绘图设备类
8.2.5 CBitmap类
和Cpen、CBrush类一样,CBitmap类是CGdiObject类的派生类,它封装了使用Windows GDI进行图形绘制中关于位图的操作。
在CBitmap类中重载了两个LoadBitmap函数,用于加载位图资源:
(1)通过资源的ID号加载一个位图资源。其定义如下:
BOOL LoadBitmap(UINT nIDResource);
(2)LoadBitmap的另一种形式用于加载位图文件资源,如:
CString m_str;
CBitmap m_bitmap;
……
CString sFilter=”Bitmap Files(* .bmp)|*.bmp||”;
CFileDialog m_Dlg(TRUE,NULL, NULL, OFN_HIDEREADONLY |
OFN_OVERWRITEPROMPT,(LPCTSTR)sFilter,NULL);
m_Dlg.DoModal( );
m_str=m_Dlg.GetPathName( );
m_Bitmap.LoadBitmap(_T(m_str));
也可以使用位图文件的绝对路径作为参数直接调用位图文件。
8.3 坐标映射方式
在Visual C++ 6.0中进行Windows图形应用程序设计时,可以采用多种不同的坐标映射方式,即不同的坐标系。
8.3.1 Windows映像方式及其设置方法
8.3.1.1 Windows映像方式
  Windows映像方式就是Windows下的逻辑坐标方式。一个实际物理屏幕是由像素组成的。
 为了方便各种情况下的程序开发和减轻程序开发的负担,Windows提供了几种映像方式,每一种映像方式提供不同的测量单位和坐标原点。详见下表:
8.3 坐标映射方式
8.3 坐标映射方式
8.3.1.2 Windows映像方式的设置方法
在MFC应用程序中,通过调用CDC类的SetMapMode()函数来设置映像方式。如:
pDC->SetMapMode(n);
其中,n是在上表中列出的映像方式的识别码。
该函数的原型为:
virtual int SetMapMode( int nMapMode );

8.3 坐标映射方式
8.3.2 逻辑坐标和设备坐标的转换
所谓设备坐标是针对屏幕或其他显示设备而言的。以屏幕为例,其原点在屏幕上的左上角;X轴的正方向向右;Y轴的正方向向下;坐标单位为像素。
而逻辑坐标是在内存中虚拟的一个坐标系,其原点在屏幕的左上角,X轴的正方向向右,Y轴的正方向向上,其单位随着映像方式的不同而改变。

8.3 坐标映射方式
8.3.2.1 设备无关性
Windows系统提供了坐标映像方式,并实现了设备无关性。所谓设备无关性指的是只要设定了映像方式,那么就会在不同的设备上显示出同样大小的图形。
对于MM_TEXT映像方式来说,因为其单位是像素且长度不固定(即一个像素所占的实际长度随着设备的不同而不同),所以,在不同的显示和输出设备上不能保证其图形的大小一样。

8.3 坐标映射方式
8.3.2.2 逻辑坐标和像素的转换方法
为了完成在各种映像方式下逻辑坐标和设备坐标的转换,VC中提供了两个成员函数:
DPtoLP(LPPOINT lpPoints);    //实现从设备坐标转换到逻辑坐标
LPtoDP(LPPOINT lpPoints);    //实现从逻辑坐标转换到设备坐标
如:
CPoint point;       
point.x=50;               
point.y=50;        //给点point赋一坐标值
PDC->DPtoLP(&point)    //将点point从设备坐标转换成逻辑坐标
(1)大多数的CDC类的成员函数要以逻辑坐标作为参数。
(2)CWnd类的成员函数要以设备坐标作为参数。
(3)所有选中测试操作和区域的定义要以设备坐标来表示。
(4)将一些长期使用的坐标值用逻辑坐标来保存。
8.4 窗口和视口
8.4.1 窗口和视口的概念
  窗口指的是虚拟存在的一个屏幕,而视口指的是在屏幕上看到的视图客户区域。在Windows中绘制图形时,并不是把图形直接绘制到屏幕上,而是以各种映像方式下的逻辑坐标系将图形绘制到虚拟的窗口中,然后再将这个窗口中的内容映像到视口中。如果是映像到屏幕上就实现了图形的显示;如果是映像到打印机等输出设备上就实现了图形的打印输出。
  因此,窗口原点、视口原点和坐标系中的原点3者的概念是不同的。窗口原点和视口原点指的是同一个点在窗口逻辑坐标和视口设备坐标系的坐标值,它决定了图形由窗口映射到视口时的相对位置。

8.4 窗口和视口
8.4.2 窗口和视口有关的操作函数
在CWnd类中与窗口和视口有关的操作函数如下:
1. SetWindowOrg函数
SetWindowOrg函数用来设置一个与设备环境有关的窗口原点。
 CPoint SetWindowOrg(int x,int y);
 CPoint SetWindowOrg(POINT point);
2. SetViewportOrg函数
SetViewportOrg函数用来设置一个与设备环境有关的视口原点。
 CPoint SetViewportOrg(int x,int y);
 CPoint SetViewportOgr(POINT point);
8.4 窗口和视口
3. SetWindowExt函数
SetWindowExt函数用来设置与设备环境有关的窗口在x和y方向的幅度。只有在MM_ISOTROPIC映像方式下该函数才有效。
 virtual CSize SetWindowExt(int cx,int cy);
 virtual CSize SetWindowExt(SIZE size);
4. SetViewportExt函数
SetViewportExt函数用来设置与设备环境有关的视口在x和y方向的幅度。只有在MM_ISOTROPIC映像方式下该函数才有效。
 virtual CSize SetViewporExt(int cx,int cy);
 virtual CSize SetViewporExt(SIZE size);

必须注意,在MM_ISOTROPIC映像方式下,必须先设置窗口幅度,再设置视口幅度。

8.4 窗口和视口
8.4.3 窗口逻辑坐标和视口设备坐标的转换
窗口和视口的作用是为了实现设备无关性。
8.4.3.1 逻辑坐标和设备坐标的转换方法
假定一个点在窗口逻辑坐标为(x1,y1),在视口设备像素坐标为(x2,y2),在两个坐标系Y轴同向的情况下,根据在窗口和视口中这个点到原点的距离相等,则有如下转换关系:
   (x1-a1)=(x2-a2)*n
   (y1-b1)=(y2-b2)*n
在两个坐标系Y轴反向的情况下,则有如下的转换关系:
  (x1-a1)=(x2-a2)*n
  (y1-b1)=-(y2-b2)*n
8.4 窗口和视口
8.4.3.2 MM_TEXT映像方式的坐标转换
在MM_TEXT映像方式下,因为在窗口和视口中都采用像素坐标,所以n等于1。依据以上讨论的坐标转换公式可得到窗口逻辑坐标到视口设备坐标的转换关系:
x2=x1-a1+a2;
y2=y1-b1+b2;
同样,可以得到视口设备坐标到窗口逻辑坐标的转换公式:
x1=x2+a1-a2;
y1=y2+b1-b2;


8.4 窗口和视口
8.4.3.3 MM_LOMETRIC等4种映像方式下的坐标转换
这4种坐标映像方式除了逻辑坐标单位不一样外,其他方面都一样,现在就以MM_LOMETRIC映像方式为例,讨论这4种映像方式下的坐标转换问题。
因为MM__LOMETRIC映像方式逻辑坐标与设备坐标Y轴反向,所以得到逻辑坐标到设备坐标的转换公式为:
x2=(x1-a1)/n+a2;
y2=-(y1-b1)/n+b2;
在MM_LOEMTRIC等4种映像方式下,虽然移动窗口原点和视口原点都可以达到移动图形的目的,但移动量是不一样的。移动窗口原点时,移动量是以逻辑坐标为单位的;而移动视口原点时,移动量是以设备坐标(像素)为单位的。
8.4 窗口和视口
8.4.3.4 MM_ISOTROPIC和MM_ANISOTROPIC映像方式的坐标转换
在这两种映像方式下,映像后图形的大小要发生变化,视口中的坐标也不再以像素为单位,而窗口中的逻辑坐标则是以像素为单位。
在MM_ISOTROPIC映像方式下,x和y两方向同比例缩放,而在MM_ANISOTROPIC映像方式下,允许两方向不同比例放缩。
8.5 设置绘图模式
绘图模式指定了画笔颜色和被填充物体内部颜色是如何与显示平面的颜色相混合的。
绘图模式只能应用于光栅类设备,而不能用于矢量设备。
设置绘图模式是利用CDC类的成员函数SetROP2来完成的,该函数的原型为:
int SetROP2( int nDrawMode );
其中:参数nDrawMode表示新的绘图模式,该函数的返回值是原先的绘图模式。能够采用的绘图模式如下表。

上一页  [1] [2] [3] 下一页

图形图像处理论文 第2页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。