⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 专业tc--图形篇4.htm

📁 图形学的一些基础知识
💻 HTM
📖 第 1 页 / 共 3 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0034)http://tc2001.myrice.com/base5.htm -->
<HTML><HEAD><TITLE>专业TC--图形篇</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2600.0" name=GENERATOR>
<META content=FrontPage.Editor.Document name=ProgId>
<META content=none name="Microsoft Border"></HEAD>
<BODY>
<H1 style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" align=center>&nbsp;&nbsp;&nbsp; 
<FONT color=#ff0000><B>WINDOWS编程基础</B></FONT></H1>
<H1 style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px" align=center><FONT 
color=#00ff00><A href="http://tc2001.myrice.com/index.htm"><FONT 
size=5><B>回首页</B></FONT></A></FONT>  <A 
href="http://tc2001.myrice.com/base4.htm"><FONT size=5>上一页</FONT></A> <A 
href="http://tc2001.myrice.com/base6.htm"><FONT color=#00ff00 
size=5>下一页</FONT></A></H1>
<P style="MARGIN-TOP: 0px; MARGIN-BOTTOM: 0px"></P>
<HR>

<P> &nbsp; 
随着PC机上图象处理软件及显示卡技术的发展,使苹果Mac(麦金托什)机独霸图象处理的局面被打破。如今在PC机上处理高质量图象已不再是梦想,丰富的图象处理软件如Photo 
Styler、Corel Draw、Adobe Photoshop、Paintbrush、Freehand、Imagepal、Picture 
Publisher等等,其处理图象的能力和水平已直追一些专业图形图象工作站。加上多媒体技术的推广发展,使图象处理成为当今多媒体应用中的一项重要内容。&nbsp;<BR>Windows提供的三大主要功能中,标准的图形用户界面最引人注目,而且对用户也是最重要的。在它所提供的用户界面中使用图标来代表驱动器、文件、子目录和许多操作系统的命令及操作。<BR>&nbsp;&nbsp;&nbsp; 
因为所有的Windows程序都具有类似的结构和相同的“外观”,所以用户不需花费很长的时间来学习新程序的用法。对于编程人员而言,具有这种一致的用户界面是因为直接使用Windows的内部子模序来创建用户界面的基本元素(菜单、对话框、滚动条等)。所有的菜单都具有同样的键盘和鼠标接口,这是因为Windows自己处理这项工作,而不是把它交给应用程序去完成。<BR>&nbsp;&nbsp;&nbsp; 
Windows的多任务操作环境允许用户同时运行多个应用程序,或在同一个程序中同时“并行”完成几件事情。一个典型的例子是在Windows中运行四个应用程序,每个程序在屏幕上占一个矩形区域。用户可在任何时间移动屏幕上的窗口、改变窗口大小、从一个窗口转换到另一个窗口和修改窗口内的信息。<BR>&nbsp;&nbsp;&nbsp; 
虽然例程里的这个例子有四个并发执行的进程,但是在任何时候只有一个进程在实际使用处理器。并发运行的任务可以有任意多个,由Windows负责把处理器时间分配给多个任务,Windows根据排好的输入队列及其他信息来控制微处理器时间的分配。<BR>在多任务操作系统未出现之前,应用程序独自控制计算机的所有资源(输入/输出设备、内存、显示器和CPU)。而在Windows中,所有这些资源都是共享的。<BR>&nbsp;&nbsp;&nbsp; 
内存是Windows中最重要的共享资源之一,当多个应用程序在同一时间运行时,这些应用程序共享内存资源,如果程序运行结束,则归还其所占用的内存区域。为了提供大块内存区域,Windwos能在内存中搬移整块代码和数据,把存储碎片收集起来以形成大块连续的内存区域。Windows在内存管理方面的一个最明显特征是它把软件开发者从DOS的内存限制中解放出来。<BR>&nbsp;&nbsp;&nbsp; 
在用户并发运行的几个程序都调用同一个程序时,为了节省空间,Windows共享那一段相同的代码,在Windows中运行的程序甚至可以共享其他.EXE文件中的例程。在Windows中把包含这种共享的例程的库文件称为动态链接库(DLL),Windows在运行时可把程序与动态链接库中的例程链接起来。为此,Windows程序使用了一种新的.EXE文件格式,这种文件包括了Windows执行时所需要的信息,如管理代码段和数据段以及用于动态链接的必要信息。<BR><BR>&nbsp;&nbsp;&nbsp; 
在开始介绍Windows图形程序设计之前,这里我想先介绍一些Visual 
C++图形编程常见的问题和一些基本方法和技巧:<BR>一、在用户环境中确定系统显示元素的颜色&nbsp;<BR>调用SDK函数GetSysColor可以获取一个特定显示元素的颜色。下例说明了如何在MFC函数CMainFrameWnd:: 
OnNcPaint中调用该函数设置窗口标题颜色。&nbsp;<BR>void CMiniFrameWnd:: OnNcPaint ()&nbsp;<BR>{ 
kk1}<BR>…&nbsp;<BR>dc.SetTextColor (:: GetSysColor (m_bActive 
?&nbsp;<BR>OLOR_CAPTIONTEXT : 
COLOR_INACTIVECAPTIONTEXT));&nbsp;<BR>…&nbsp;<BR>}&nbsp;<BR>二、访问预定义的GDI对象&nbsp;<BR>可以通过调用CDC:: 
SlectStockObject使用Windows的几个预定义的对象,诸 
如刷子、笔以及字体。下例使用了Windows预定义的笔和刷子GDI对象在视窗中画一个椭圆。&nbsp;<BR>//Draw ellipse using 
stock black pen and gray brush.&nbsp;<BR>void CSampleView:: OnDraw (CDC* 
pDC)&nbsp;<BR>{ kk1}<BR>//Determine size of view.&nbsp;<BR>CRect 
rcView;&nbsp;<BR>GetClientRect (rcView);&nbsp;<BR>//Use stock black pen and 
stock gray brush to draw ellipse.&nbsp;<BR>pDC-&gt;SelectStockObject 
(BLACK_PEN);&nbsp;<BR>pDC-&gt;SelectStockObject (GRAY_BRUSH)&nbsp;<BR>//Draw the 
ellipse.&nbsp;<BR>pDC-&gt;Ellipse 
(reView);&nbsp;<BR>}&nbsp;<BR>也可以调用新的SDK函数GetSysColorBrush获取一个系统颜色刷子,下例用背景色在视窗中画一个椭圆:<BR>void 
CsampleView:: OnDraw (CDC* pDC)&nbsp;<BR>{kk1}&nbsp;<BR>//Determine size of 
view.&nbsp;<BR>CRect rcView;&nbsp;<BR>GetClientRect (rcView);&nbsp;<BR>//Use 
background color for tooltips brush.&nbsp;<BR>CBrush * 
pOrgBrush=pDC-&gt;SelectObject<BR>(CBrush::FromHandle(::GetSysColorBrush 
(COLOR_INFOBK)));&nbsp;<BR>//Draw the ellipse.&nbsp;<BR>pDC-&gt;Ellipse 
(rcView);&nbsp;<BR>//Restore original brush.&nbsp;<BR>pDC-&gt;SelectObject 
(pOrgBrush);&nbsp;<BR>}&nbsp;<BR>三、确定GDI对象的属性信息&nbsp;<BR>可以调用GDIObject:: 
GetObject。这个函数将指定图表设备的消息写入到&nbsp;<BR>缓冲区。下例创建了几个有用的辅助函数。&nbsp;<BR>//Determine if 
font is bold.&nbsp;<BR>BOOL IsFontBold (const 
CFont&amp;font)&nbsp;<BR>{kk1}&nbsp;<BR>LOGFONT stFont;&nbsp;<BR>font.GetObject 
(sizeof (LOGFONT), &amp;stFont);&nbsp;<BR>return (stFont.lfBold)? TRUE: 
FALSE;&nbsp;<BR>}&nbsp;<BR><BR>//Return the size of a bitmap.&nbsp;<BR>CSize 
GetBitmapSize (const CBitmap&amp;bitmap)&nbsp;<BR>{ kk1}<BR>BITMAP 
stBitmap;&nbsp;<BR>bitmap.GetObject (sizeof (BITMAP), 
&amp;stBitmap);&nbsp;<BR>return CSize (stBitmap.bmWidth, stBitmap. 
bmHeight);&nbsp;<BR>}&nbsp;<BR>//Create a pen with the same color as a brush. 
BOOL CreatePenFromBrush (Cpen&amp;pen, cost 
Cbrush&amp;brush)&nbsp;<BR>{kk1}&nbsp;<BR>LOGBRUSH 
stBrush;&nbsp;<BR>brush.Getobject (sizeof (LOGBRUSH), 
&amp;stBrush);&nbsp;<BR>return pen. Createpen (PS_SOLID, 0, 
stBrush.ibColor);&nbsp;<BR>}&nbsp;<BR>四、实现一个橡皮区矩形&nbsp;<BR>CRectTracker是一个很有用的类,可以通过调用CRectTracker::TrackRubberBand&nbsp;<BR>响应WM_LBUTTONDOWN消息来创建一个橡皮区矩形。下例表明使用CRectTracker移动和重置视窗中的蓝色椭圆的大小是很容易的事情。&nbsp;<BR>首先,在文件档中声明一个CRectTracker数据成员: 
class CSampleView : Public CView&nbsp;<BR>{ kk1}<BR>…&nbsp;<BR>public 
:&nbsp;<BR>CrectTracker 
m_tracker;&nbsp;<BR>…&nbsp;<BR>};&nbsp;<BR>其次,在文档类构造函数中初始化CRectTracker对象: 
CSampleDoc:: CSampleDOC ()&nbsp;<BR>{ kk1}<BR>//Initialize tracker position, 
size and style. m_tracker.m_rect.SetRect (0, 0, 10, 
10);&nbsp;<BR>m_tracker.m_nStyle=CRectTracker:: resizeInside | CRectTracker:: 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -