已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MFC绘图-显示位图 1、将位图加载到内存DC中2、将内存DC中的内容绘制到要显示位图的DC中*MFC中没有直接用来加载位图的函数,可以使用WindowsAPI中的LoadImage函数来加载位图,其原型如下:HANDLE LoadImage(HINSTANCE hinst, /位图实体句柄,若位图在硬盘或者资源文件/中,则将该参数设为NULLLPCTSTR lpszName, /位图所在路径及文件名,或者资源名称UINT uType, /加载位图的类型:/1、IMAGE_BITMAP/2、IMAGE_CURSOR/3、IMAGE_ICONint cxDesired, /位图宽度,像素int cyDesired, /位图高度,像素UINT fuLoad /加载方式比如LR_LOADFROMFILE等);步骤:CClientDC dc(this);CDC *mdc=new CDC;/CDC只有空构造函数,也就是说无法通过拷贝函数来构造一个/与dc相同的mdc,即mdc=dc非法。/CreateCompatibleDC建立一个适合指定pDC的内存设备上下文mdc-CreateCompatibleDC(&dc);CBitmap bitmap;/CBitmap继承自CGdiObject/其成员变量m_hObject是一个句柄/A HANDLE containing the HBITMAP, HPALETTE, HRGN, HBRUSH, HPEN, or HFONT/attached to this object./可以简单记为bitmap拥有HBITMAP类型句柄m_hObject,而该句柄需要使用/Windows API的LoadImage获得bitmap.m_hObject=(HBITMAP):LoadImage(NULL,b1.bmp,IMAGE_BITMAP,500,400,LR_LOADFROMFILE);mdc-SelectObject(bitmap);CRect rect;/取得客户区域大小GetClientRect(&rect);/BitBlt()将位图贴到要显示的DCdc.BitBlt(0,0,rect.right,rect.bottom,mdc,0,0,SRCCOPY);/最后要记得在析构函数中释放mdcdelete mdc posted 2010-01-25 16:28 蒲甫安 阅读(139) 评论(0) 编辑MFC函数-CreateCompatibleDC() 函数功能:该函数创建一个与指定设备兼容的内存设备上下文环境(DC)。 函数原型:HDC CreateCompatibleDC(HDC hdc);CreateCompatibleDC-参数说明 参数: hdc:现有设备上下文环境的句柄,如果该句柄为NULL,该函数创建一个与应用程序的当前显示器兼容的内存设备上下文环境。 返回值:如果成功,则返回内存设备上下文环境的句柄;如果失败,则返回值为NULL。 Windows NT:若想获得更多错误信息,请调用GetLastError函数。 注释:内存设备上下文环境是仅在内存中存在的设备上下文环境,当内存设备上下文环境被创建时,它的显示界面是标准的一个单色像素宽和一个单色像素高,在一个应用程序可以使用内存设备上下文环境进行绘图操作之前,它必须选择一个高和宽都正确的位图到设备上下文环境中,这可以通过使用CreateCompatibleBitmap函数指定高、宽和色彩组合以满足函数调用的需要。 当一个内存设备上下文环境创建时,所有的特性都设为缺省值,内存设备上下文环境作为一个普通的设备上下文环境使用,当然也可以设置这些特性为非缺省值,得到它的特性的当前设置,为它选择画笔,刷子和区域。 CreateCompatibleDc函数只适用于支持光栅操作的设备,应用程序可以通过调用GetDeviceCaps函数来确定一个设备是否支持这些操作。 当不再需要内存设备上下文环境时,可调用DeleteDc函数删除它。 ICM:如果通过该函数的hdc参数传送给该函数设备上下文环境(Dc)对于独立颜色管理(ICM)是能用的,则该函数创建的设备上下文环境(Dc)是ICM能用的,资源和目标颜色间隔是在Dc中定义。 速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;头文件:wingdi.h;库文件:gdi32.lib。posted 2010-01-25 16:05 蒲甫安 阅读(409) 评论(0) 编辑CStatic控件的基本使用 CStatic 继承于 CWnd,是一种特殊的窗体。他可以显示文本字符串(这也是最常用的用法)、图标、指针(cursor)、位图和增强图文元件. 通常静态控件不提供输入和输出。但是如果把他的属性设置为 SS_NOTIFY,他可以通知其父窗口的击鼠标事件。 一。CStatic 用于显示文本 如果文本不变,可以直接设置其 Caption。如果想在运行过程中改变其显示文本,可以用如下方式: CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC); pStatic-SetWindowText(Just a Test of Static Control!); 二。CStatic 用于显示图标 如果要显示图标,则必须要设置窗口属性为 SS_ICON 和 SS_CENTERIMAGE,实例代码如下: CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC); LONG style = GetWindowLong(pStatic-GetSafeHwnd(), GWL_STYLE);style |= SS_ICON; style |= SS_CENTERIMAGE; SetWindowLong(pStatic-GetSafeHwnd(),GWL_STYLE,style); pStatic-SetIcon(m_hIcon); 三。CStatic 用于显示指针 cursor 如果要显示 cursor,则必须要设置窗口属性为 SS_ICON 和 SS_CENTERIMAGE,实例代码如下: CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC); LONG style = GetWindowLong(pStatic-GetSafeHwnd(), GWL_STYLE); style |= SS_ICON; style |= SS_CENTERIMAGE; SetWindowLong(pStatic-GetSafeHwnd(),GWL_STYLE,style); pStatic-SetCursor(OnQueryDragIcon(); 四。CStatic 用于显示位图 如果要显示图标,则必须要设置窗口属性为 SS_BITMAP 和 SS_CENTERIMAGE,实例代码如下: /获得指向静态控件的指针CStatic *pStatic=(CStatic*)GetDlgItem(IDC_STATIC); /获得位图句柄HBITMAP hBitmap=:LoadBitmap(AfxGetApp()-m_hInstance, MAKEINTRESOURCE(IDB_BITMAP2); /LONG result = SetWindowLong(pStatic-GetSafeHwnd(),GWL_STYLE,style); /设置静态控件的样式,使其可以使用位图,并试位标显示使居中pStatic-ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE); /设置静态控件显示位图pStatic-SetBitmap(hBitmap); 文章出处:CSDN 使用Visual C+ 6.0编制软件时,静态控件是最常用的控件之一。一般情况下,静态控件用作那些没有固定标题文本属性的控件(如文本编辑控件、列表框等)的标签,或者用来为控件分组,或者用来显示一些提示性的文件。实际上,静态控件除了显示静态文本这一基本功能外,还有许多其他的特殊功能,如在静态控件中可以显示图标、位图,甚至还可以在静态控件中显示动画。本文将通过示例程序来介绍静态控件的这些特殊用法。 1 显示图标 使用AppWizard创建一个基于对话框的MFC应用程序,设置其工程名为ShowIco。 在对话框上增加一个静态控件。需要注意的是,有资源管理器添加的静态控件在默认情况下其ID均为IDC_STATIC,因此,如果需要在程序中区分和操纵各个不同的静态控件,一般情况下,需要更改新添加的静态控件的ID值。这里将静态控件的ID值设置为IDC_SHOWICO。 在资源管理器中添加图标资源,其ID为IDI_ICON1。 使用ClassWizard添加WM_INITDIALOG消息处理函数OnInitDialog。 在OnInitDialog函数中下面的代码: /获得指向静态控件的指针 CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWICO); /加载图标 HICON hIcon=AfxGetApp()-LoadIcon(IDI_ICON1); /设置静态控件的样式,使其可以使用图标,并试图标显示使居中 pStatic-ModifyStyle(0xF,SS_ICON|SS_CENTERIMAGE); /设置静态控件图标 pStatic-SetIcon(hIcon); 运行该程序,显示如上图。 2显示位图 使用AppWizard创建一个基于对话框的MFC应用程序,设置其工程名为ShowBmp。 在对话框上增加一个静态控件,将静态控件的ID值设置为IDC_SHOWBMP。 在资源管理其中添加位图资源,其ID为IDB_INFO。 使用ClassWizard添加WM_INITDIALOG消息处理函数OnInitDialog。 在OnInitDialog函数中下面的代码: /获得指向静态控件的指针 CStatic *pStatic=(CStatic *)GetDlgItem(IDC_SHOWBMP); /获得位图句柄 HBITMAP Bitmap=:LoadBitmap(AfxGetApp()_hInstance, MAKINTRESOURCE(IDB_INFO); /设置静态控件的样式,使其可以使用位图,并试位标显示使居中 pStatic-ModifyStyle(0xF,SS_BITMAP|SS_CENTERIMAGE); /设置静态控件显示位图 pStatic-SetBitmap(hBitmap); 运行该程序即可。 3 显示动画 编写一个字符串在静态控件中不停的移动的程序。 使用AppWizard创建一个基于对话框的MFC应用程序,设置其工程名为ShowAnimation。 在对话框上增加一个静态控件。将静态控件的ID值设置为IDC_PREVIEW。 使用ClassWizard添加WM_INITDIALOG消息处理函数OnInitDialog和WM_TIMER的消息处理函数OnTimer。 在CshowAnimationDlg类中,增加两个变量m_x和m_y,用以表示字符串的坐标。 在OnInitDialog函数中添加下列代码: m_x=0; m_y=0; KillTimer(1); VERIFY(SetTimer(1, 500, NULL) != 0); 1 在CshowAnimationDlg类中,增加一个成员函数Draw()如下: void CshowAnimationDlg:Draw() CWnd *pWnd=GetDlgItem(IDC_PREVIEW); CDC *pDC=pWnd-GetDC(); RECT rect; pWnd-GetClientRect(&rect); pWnd-Invalidate(); pWnd-UpdateWindow(); pDC-SelectStockObject(BLACK_BRUSH); pDC-Rectangle(0,0,rect.right,rect.bottom); pDC-SetTextColor(RGB(255,0,0); pDC-SetBkColor(RGB(0,0,0); if(m_x=rect.right)|(m_y=rect.bottom-20) m_x=0; m_y=0; pDC-TextOut(m_x,m_y,动画); 2 在OnTimer函数中,添加如下代码: if (nIDEvent = 1) m_x+=5; m_y+=5; Draw(); else CWnd:OnTimer(nIDEvent);MFC中 CStatic类(静态控件类)【说明】CStatic类提供了一个Windows静态控件的功能。一个静态控件可以用来显示一个文本字符串、方框、矩形、图标、光标、位图或增强的图元文件。它可以被用来作为标签、方框或用来分隔其它的控件。静态控件通常不接收输入,也不提供输出;但是,如果它具有SS_NOTIFY风格,则它可以通知其父有关设备点击的消息。创建一个静态控件分两步。首先,调用构造函数来构造一个CStatic类的对象,然后调用成员函数Create来创建此静态控件并将它分配给当前的CStatic类的对象。如果你是在一个对话框中创建了一个静态控件(通过一个对话框资源),则当用户关闭这个对话框时, CStatic类的对象被自动销毁。如果你是在一个窗口中创建了一个CStatic类的对象,则可能需要你自己来销毁它。在一个窗口的堆栈中创建的CStatic类的对象将自动被销毁。如果你是使用new函数在堆中创建CStatic类的对象,则当你使用完后,必须调用delete来销毁这个CStatic类的对象。【库 名】【成员函数】(1)BOOL Create(LPCTSTR lpszText, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID = 0xffff);【返回值】如果本成员函数调用成功则返回非零值;否则返回0。【参 数】lpszText指定要放置在静态控件中的文本。如果是NULL,则表示没有文本是可见的。dwStyle指定静态控件的窗口风格。以下任何静态控件风格的组合都可以用于这个控件。SS_BITMAP指定在静态控件中显示一个被定义在资源文件中的位图。该风格将忽略静态控件的高度和宽度,静态控件将根据位图的大小自动调节自身的尺寸。SS_BLACKFRAME建立一个黑色的边框。SS_BLACKRECT建立一个黑色的矩形。SS_CENTER使文字在静态控件中水平居中。SS_CENTERIMAGE当静态控件用于显示文本时,该风格将使文本在静态控件中垂直居中。当静态控件用于显示位图或图标时,该风格将使位图或图标在静态控件中垂直居中,当位图或图标小于静态控件时,静态控件将使用位图或图标左上角的点的颜色填充空白处。SS_ENHMETAFILE指定在静态控件中显示一个增强型图元文件。该风格将不会忽略静态控件的高度和宽度,而图元文件将调节自身的大小来适应静态控件的尺寸。SS_ETCHEDFRAME建立一个浮雕边框。SS_ETCHEDHORZ建立一个边框,并将顶端边框设置为浮雕风格。SS_ETCHEDVERT建立一个边框,并将左侧边框设置为浮雕风格。SS_GRAYFRAME建立一个灰色的边框。SS_GRAYRECT建立一个灰色的矩形。SS_ICON指定在静态控件中显示一个被定义在资源文件中的图标。该风格将忽略静态控件的高度和宽度,静态控件将根据位图的大小自动调节自身的尺寸。SS_LEFT使文字在静态控件中左对齐。SS_LEFTNOWORDWRAP在缺省情况下,静态控件把n和t都作为换行标记。只有在设置本风格后,静态控件才把t看作是制表键(缺省时制表键的宽度为8个字符的宽度)。SS_NOPREFIX该标志表示终止对前缀字符的处理。通常,本成员函数将前缀助记符&解释为一个指令,即在&后面的字符下面划一下划线。并且将&解释成一个单个的&指令。通过指令指定该标志,这种处理就不再进行了。SS_NOTIFY在缺省情况下,静态控件是不响应鼠标事件的。只有在设置该风格后,当用户单击静态控件时,静态控件才向父窗口发送STN_CLICKED通知。SS_OWNERDRAW在指定该风格后,当静态控件在视觉外观发生变化时,该静态控件的属主窗口将响应WM_DRAWITEM消息。SS_RIGHT使文字在静态控件中左对齐。SS_SIMPLE只显示一行文本,文本不能被剪切或替换(父窗口不能处理CTLCOLOR消息)。SS_SUNKEN设置一个下沉的静态控件,当静态控件为一个方框时,方框的四边下沉;当静态控件为一个矩形时,整个矩形下沉。SS_USERITEM建立一个用户自定义项目。SS_WHITEFRAME建立一个白色的边框。SS_WHITERECT建立一个白色的矩形。rect指定静态控件的位置和大小。它可以是一个RECT结构类型的数据或一个CRect类的对象。pParentWnd指定CStatic类的对象的父窗口,通常是一个CDialog类的对象。它不能是NULL。nID = 0xffff指定静态控件的控件标识。【注释】在使用静态控件显示文本而且没有设置SS_LEFTNOWORDWRAP风格时,n和t都忧患行的作用。两者的区别是在一行文本的长度大于静态控件的宽度时使用n换行将使该行文本的下一行也为空行,但使用t则无此现象。(2)CStatic();【注 释】构造一个空的CStatic类的对象。(3)HBITMAP GetBitmap() const;【返回值】返回一个当前位图的句柄,如果没有设置位图,则返回NULL。【注释】此成员函数用来获取先前用成员函数SetBitmap设置的与CStatic类的对象关联的位图句柄。(4)HCURSOR GetCursor();【返回值】返回一个当前图标句柄。如果没有设置图标则返回NULL。【注释】此成员函数用来获取先前用成员函数SetCursor设置的与CStatic类的对象关联的光标句柄。(5)HENHMETAFILE GetEnhMetaFile() const;【返回值】返回一个当前增强图元文件句柄。如果没有设置增强的图元文件则返回NULL【注释】此成员函数用来获取先前用成员函数SetEnhMetaFile设置的与CStatic类的对象关联的增强的图元文件句柄。(6)HICON GetIcon();【返回值】返回一个当前图标句柄。如果没有设置增强的图标则返回NULL。【注释】此成员函数用来获取先前用成员函数SetIcon设置的与CStatic对象关联关联的图标句柄。(7)HBITMAP SetBitmap(HBITMAP hBitma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 滞留应急预案范文(3篇)
- 桩基施工方案图解(3篇)
- 施工方案路基工程(3篇)
- 应急预案延期申请(3篇)
- 井盖画施工方案(3篇)
- 押运任务应急预案(3篇)
- 水电吊顶施工方案(3篇)
- 小学学生守则执行情况评估报告
- 小区斗殴应急预案(3篇)
- 工商企业股权转让法律协议标准文本
- 互助与团队精神主题班会课件
- 制造企业发票管理办法
- 中医情志护理的原则和方法
- 护士情绪管理课件总结
- DBJ50-T-200-2024 建筑桩基础技术标准
- 新人教版小学数学教材解读
- 设备、管道、钢结构施工方案
- 2021-2026年中国沉香木行业发展监测及投资战略规划研究报告
- 2024-2030年中国海南省废水污染物处理资金申请报告
- 新能源汽车技术 SL03维修手册(第4章)-电气-4.2.2~4.2.12电器集成
- 教科版科学教材培训
评论
0/150
提交评论