![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MFC绘图
文章平均质量分 58
曾经一片
业精于勤而荒于嬉行成于思而毁于随
展开
-
MFC 使用空画刷
CClientDC dc(this);//使用(HBRUSH)GetStockObject可以返回空画刷句柄,但CBrush //无法通过画刷句柄构造,可通过给其静态成员函数FromHandle传递HBRUSH //句柄获得CBrush指针 CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));原创 2013-04-22 15:24:59 · 1464 阅读 · 0 评论 -
在VC中调用DirectShow播放视频
有些正在尝试自己编制游戏的朋友可能会碰到这样一个问题:游戏要播放片头动画,可是如何全屏播放动画呢?用媒体播放机控件?这是最简单的方法,可是好多功能都用不上,不免觉得有些浪费。而用vfw之类的多媒体库又太麻烦。怎么办呢? 其实微软不但提供了DirectX这样的便于游戏开发的SDK,还提供了基于其上的DirectX Media SDK。这套SDK可以帮助你简化多媒体开发,而又充分利用Dire转载 2013-05-03 15:38:19 · 855 阅读 · 0 评论 -
MFC简单创建画笔
MFC可以使用CPen的成员函数CreatePen快速创建画笔,只需要指定风格,画笔宽度,颜色就可以。CreatePen(int nPenStyle, int nWidth, COLORREF crColor);[说明]用指定的样式、宽度和颜色创建一个画笔[参数表]nPenStyle ------ Long,指定画笔样式,可以是下述常数之一PS_SOLID画笔画出的是实原创 2013-05-09 19:09:36 · 2844 阅读 · 0 评论 -
MFC 鼠标拖动无边框窗口
在鼠标左键按下消息中添加以下代码:PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); 比如:void Dialog1::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler原创 2013-04-18 17:24:17 · 1267 阅读 · 0 评论 -
屏幕坐标向世界坐标转换
计算机中有很多坐标系,对象坐标系、世界坐标系、裁剪坐标系、屏幕坐标系!OpenGL流水线很容易实现上述顺序的转换。从网上查的信息:1. 设备坐标系与屏幕坐标系设备坐标(Device Coordinate)又称为物理坐标(Physical Coordinate),是指输出设备上的坐标。通常将屏幕上的设备坐标称为屏幕坐标。设备坐标用对象距离窗口左上角的水平距离和垂直距离来指定对象的位置,是以像转载 2013-05-29 14:24:34 · 4430 阅读 · 0 评论 -
CScrollView滚动条范围问题 超过32位不能正确下拉问题
感谢微软提供的方法,非常简单:在OnScroll函数中添加:BOOL CMyScrollView::OnScroll(UINT nScrollCode, UINT nPos, BOOL bDoScroll) { SCROLLINFO info; info.cbSize = sizeof(SCR原创 2013-07-26 10:27:58 · 1237 阅读 · 0 评论 -
DrawText函数
函数原型int DrawText(HDC hDC, // 设备描述表句柄LPCTSTR lpString, // 将要绘制的字符串int nCount, // 字符串的长度LPRECT lpRect, // 指向矩形结构RECT的指针UINT uFormat // 正文的绘制选项);参数hdc:[输入]设备环境句柄。转载 2013-07-29 09:53:13 · 2281 阅读 · 0 评论 -
MFC加载图标,位图。LoadImage LoadIcon, LoadBitmap
MFC加载图标和位图,有2种方式,一种是从工程的资源中加载,一种是从文件加载。先说图标的,图标格式为.ico,也就是我们常说的ICON图片。我们直观的希望是加载ico使用LoadIcon()函数,加载bitmap图片使用LoadBitmap函数,事实上,的确可以这样。1、加载图标LoadIcon函数要加载位图,要使用CWinApp的成员函数LoadIcon才行。当你查看MS原创 2013-11-05 08:58:51 · 19667 阅读 · 1 评论 -
MFC中怎样字加下划线
CFont font; VERIFY(font.CreateFont( 36, // nHeight 0, // nWidth 0, // nEscapement 0, // nOrientation FW_NORMAL, // nWeightFALSE, // bItalic TRUE, // bUnderline下划线标记,需要下划线把这里设置成TRUE0, //原创 2013-12-09 11:16:51 · 3327 阅读 · 0 评论 -
VC的剪贴板操作
1、文本内容的操作2、WMF数据的操作3、位图的操作4、设置使用自定义格式5、感知剪贴板内容的改变6、自动将数据粘贴到另一应用程序窗口一、文本内容的操作下面的代码示范了如何将文本内容复制到剪贴板(Unicode编码的先转化为ASCII):CString source;//文本内容保存在source变量中if( OpenClipboard() ){转载 2013-12-26 14:57:28 · 3212 阅读 · 0 评论 -
在 CRichEditCtrl控件里 显示位图
首先定义一个类继承自 CRichEditCtrl,头文件定义如下[cpp] view plaincopyprint?#pragma once // MyRichEdit class MyRichEdit : public CRichEditCtrl { DECLARE_DYNAMIC(MyRic转载 2013-12-26 15:05:26 · 1118 阅读 · 0 评论 -
WIN7系统 用VS2010+OpengL搭建开发平台并实例测试
前面三段扯淡,要技术请直接掠过前三段!!! 前些天看到朋友在“求OpengL的各种安装”,过了好几天,问了她安装好没有,结果她还说没有安装好。当时心血来潮,立马说我帮你搞定。本来以为是帮忙下载个软件,因为我看错为“求OpengL的各种安装包”,以为用电信出口随便下载就是了。今天为了兑现帮好朋友的目标,下午在网上查了下OpengL到底是什么东东。然后才明白了,不是安装包!到底是什么看了百度百科转载 2014-02-20 10:53:21 · 1040 阅读 · 0 评论 -
DirectDraw用法
对DirectShow 和 OPenCV 无法选择,对SDK等相关概念不够透彻,且环境的配置还是蛮复杂的。好在,通过学习,我没有了这些问题。因此这篇笔记应运而生。第五步是建立在已经打开一个文件的基础上的,就不能在这个InitDD中了。对于一个新手(比如我啊,我也在一边学习一边写文章)打开文件就很迷茫,因为这个文件不是BMP文件,BMP文件还有固定的结构体,视频文件是什么样的格式呢?更直接的说,转载 2013-05-03 15:00:55 · 948 阅读 · 0 评论 -
GDI+ GDI提高效率
1、DrawImage,比起BitBlt实在差的不是一点点,解决的方法就是用BitBlt替换DrawImage。2、PixelFormat,原来没想到这个也会影响效率,但事实证明确实是这样。Bitmap在new出来的时候是和图片本身的格式有关的,但在最终画到DC上的可不一定是这个格式,具体的格式请查阅MSDN:Image Pixel Format Constants如果格式不对,D转载 2013-04-26 17:28:20 · 1103 阅读 · 0 评论 -
CBitmap保存为Bmp文件 VC++ MFC实现
感谢这位同学的分享:http://wenku.baidu.com/view/f4f1580b76c66137ee061903.html将下面函数复制到自己的类中,函数为:void CMyDlg::MySaveBmpTofile(HBITMAP hbmp, CString path){//参数说明: hbmp :需保存的图象的句柄 path :保存路径转载 2013-04-19 10:41:34 · 2077 阅读 · 0 评论 -
ReleaseDC和DeleteDC的区别
对于create的dc应该予以deletedc,而对于getdc的应予以releasedc转载 2013-04-19 08:55:21 · 832 阅读 · 0 评论 -
MFC 获得Btimap的高度 GetBitmap() 输出bitmap
首先加载一张位图:可以使用2中方法,一种是利用CBitmap的LoadBitmap.还有一种是使用LoadImage.CBitmap bitmap;bitmap.LoadBitmap(IDB_BITMAP1);//也可以从硬盘上加载,从硬盘加载的时候,LoadImage(“F:\\123.bmp”)就可以了。BITMAP tempBmp; //这里要定义一个位图结构体,原创 2013-04-19 08:46:49 · 3474 阅读 · 0 评论 -
MFC获得屏幕上任意一点的像素值
使用CWindowDC获得屏幕任意一点point的像素值:CWindowDC dc(GetDesktopWindow());COLORREF color = dc.GetPixel(point); //获得点point的颜色值int Red=GetRValue(color); //获得红色值int Green=GetGValue(color); //获原创 2013-04-12 15:21:51 · 4960 阅读 · 0 评论 -
教你怎么实现高速高效双缓冲绘图
不管是在MFC,还是在其他的框架中绘图,双缓冲,都是非常必要的绘图操作,像OPGL这种专业的绘图库,都是必备双缓冲的。 那么为什么需要双缓冲呢?因为我们的绘图控件,其实是有一块背景的,如果没有背景,就是透明的。打个比方,我们的绘图区域是张白纸,如果没有背景,绘图区就变成了一块透明玻璃,试试你的客户区成透明的,会是多么悲惨的事情(如果有特殊需求,就成了亮点。。)。绘图的时候原创 2013-04-11 19:58:05 · 1126 阅读 · 0 评论 -
MFC截图
MFC截图的原理非常简单:1、获得桌面DCCDC* pDeskDC = GetDesktopWindow()->GetDC();2、输出图形CClient dc(this);dc.BiBlt(0,0,100,100,pDeskDC,0,0,SRCCOPY); // 一般会使用StretchBlt来作为输出,好截取想要的图形。这个自己思考了。原创 2013-04-24 14:29:11 · 1458 阅读 · 0 评论 -
MFC FillSolidRect SetBKMode绘图
在MFC 中,有时候需要填充背景色,或者叫着填充一个矩形的颜色,这个时候可以使用2种方法:FillRect和FillSolidRect. FillRect使用的是一个画刷填充,速度比FillSolidRect慢。FillSolidRect使用的是静态颜色,直接使用RGB颜色填充,FillSoliRect会将填充的颜色作为后续文字输出的背景色。函数原型:void FillSolidRect(原创 2013-04-17 10:18:36 · 9311 阅读 · 0 评论 -
MFC 中操作图元文件,矢量图,WMF,EMF
在windows绘图中,有2种图形:矢量图和位图。如果要做图形的完美放大和缩小,应该使用矢量图。如果使用位图,当放大过大的时候,就会出现模糊的情况,因为位图的放大,是把1个像素绘制在多个像素点上,当大到一定地步,整个屏幕可以只有一个像素。 矢量图中较为常见的图元是:WMF和EMF文件,我们要在程序中输出图元,只需要使用下面的步骤:在程序中输出图元:CDC * pDC = GetDC原创 2013-04-13 10:56:08 · 6393 阅读 · 0 评论 -
MFC双缓冲绘图
1、为什么使用双缓冲?我们都知道电脑CPU计算速度是非常快的,但是电脑要把信息显示到显示屏上,是比较慢的,因为显示屏要去更新像素点,假如我们要画1000条线,CPU画一条线只需要微秒,但是显示屏显示一条线需要1毫秒,如果我们不使用双缓冲,使用一个for循环输出1000条线,那么显示屏要刷新1000次才能完成1000条线的绘制,这会花掉1.001秒钟才能绘制一次我们想要的图形。很明显,这是非常低原创 2013-04-25 15:12:40 · 1001 阅读 · 0 评论 -
MFC常用绘图函数
(1)、常用的绘画成员函数: SetPixel():用指定的颜色在指定的坐标画一个点,返回值为RGB颜色值; 函数原型 COLORREF SetPixel( int x, inty, COLORREF crColor ); COLORREF Se转载 2013-04-25 21:52:43 · 4851 阅读 · 1 评论 -
在VC++6.0下设置GDI+(最简介的方法)(转)
在VC++6.0下设置GDI+(最简介的方法)(转)1.下载(GDI+ for VC6.0 SDK)GDIPlus文件将其中的Includes和Lib中的文件拷到vc目录下的Includes和Lib文件夹中. 下载地址:http://www.codeguru.com/code/legacy/gdi/GDIPlus.zip(引用他人的)2.在你将要使用GDI+的工转载 2013-04-25 22:07:50 · 453 阅读 · 0 评论 -
使用CxImage进行图形和格式转换(CBitmap to jpg or png or gif or bmp)
CxImage类库介绍CxImage类库是一个几乎可以管理所有的图象文件的C++类库。它可以快捷地存取、显示、转换各种图像。其他的图形库?有那么多优秀的图形库,如OpenIL,FreeImage,PaintLib等等,它们是功能强大,齐全,而且是经常更新的。然而,如果你要使用他们,你可能会遇到一些麻烦,,因为它们大部分是平台无关的,用C语言写成,有的还夹杂着基本的C++ wrapper和大转载 2014-05-06 18:59:33 · 5474 阅读 · 0 评论