随笔分类 -  【1】界面-绘图

摘要:CDC::SetMapMode virtual int SetMapMode(int nMapMode);MM_ANISOTROPIC把逻辑单位转换为任意缩放轴上的任意单位。把映射模式设置为MM_ANISOTROPIC并不改变当前窗口或视图端口的设置。要改变单位、方向和缩放,可调用SetViewportExt和SetWindowtExt成员函数。 MM_ISOTROPIC逻辑单位转换为带有对等缩放... 阅读全文
posted @ 2010-04-30 11:25 傲衣华少 阅读(391) 评论(0) 推荐(0) 编辑
摘要:一、轨迹生成: BeginPath (hdc) ;//开始轨迹  TextOut(...); MoveToEx (hdc, 40, 25, NULL) ; LineTo (hdc, 50, 75) ; LineTo (hdc, 60, 25) ;  CloseFigure();//用直线封闭轨迹 EndPath (hdc) ;//结束轨迹 StrokePath (hdc) ; //画出轨迹二、轨... 阅读全文
posted @ 2010-04-30 10:42 傲衣华少 阅读(458) 评论(0) 推荐(0) 编辑
摘要:一、DIB内的位图基本上没有经过任何压缩。  DIB的扩展名是.BMP或者.DIB  与大多数位图格式不同的是,DIB从底部开始,水平向上扫描图片。  JPEG,GIF 是压缩后的DIB。二、位图操作:  1,打开位图    hFile = CreateFile (pstrFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, F... 阅读全文
posted @ 2010-04-28 14:20 傲衣华少 阅读(523) 评论(0) 推荐(0) 编辑
摘要:一、位图 -- 光栅图像 -- 缩放会失真  元文件 -- 矢量图像 -- 缩放不失真二、一些函数:  1、BitBlt (bit blit)   直接拷贝位图象素。  2、BOOL CDC::StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int ... 阅读全文
posted @ 2010-04-26 16:37 傲衣华少 阅读(925) 评论(0) 推荐(0) 编辑
摘要:三、GDI+  GDI+是GDI的下一个版本,它进行了很好的改进,并且易用性更好。GDI的一个好处就是你不必知道任何关于数据怎样在设备上渲染的细节,GDI+更好的实现了这个优点,也就是说,GDI是一个中低层API,你还可能要知道设备,而GDI+是一个高层的API,你不必知道设备。例如你如果要设置某个控件的前景和背景色,只需设置BackColor和ForeColor属性。四、编程模式的变化 &ldq... 阅读全文
posted @ 2010-04-26 15:23 傲衣华少 阅读(497) 评论(0) 推荐(0) 编辑
摘要:裁解区域不受SetViewportOrg影响, CClientDC dc(this); dc.SetViewportOrg(150,200); CRgn rgn; rgn.CreateRectRgn(0,0,150,230); dc.SelectClipRgn(&rgn);和 CClientDC dc(this); CRgn rgn; rgn.CreateRectRgn(0,0,150,... 阅读全文
posted @ 2010-04-15 11:16 傲衣华少 阅读(209) 评论(0) 推荐(0) 编辑
摘要:通常在调用GetDC和BeginPaint时,系统用设备描述表的默认属性创建一个DC,使用设置设备描述表后,不会保存属性,下次还得重新设置。如果要保存,需要设置窗口属性为:CS_OWNDC,这样只需要设置一次设备描述表属性就可以了。当然,这个只针对GetDC和BeginPaint返回的DC。设备描述表的属性(具体属性值,查看MFC文档):virtual int SetMapMode(int nMa... 阅读全文
posted @ 2010-04-14 11:08 傲衣华少 阅读(326) 评论(0) 推荐(0) 编辑
摘要:CreateDC(TEXT("DISPLAY"),NULL,NULL,NULL),获取整个屏幕的设备描述表。等同与:GetDC(NULL);CreateIC(TEXT("DISPLAY"),NULL,NULL,NULL),只用于获取设备描述表的属性信息,不能用于绘图。CreateCompatibleDC,用于操作位图CreateMetaFile,源文件(二进制编码形式的GDI调用集合)。这个的关闭... 阅读全文
posted @ 2010-04-12 17:26 傲衣华少 阅读(717) 评论(0) 推荐(0) 编辑
摘要:WM_PAINT 窗口界面无效后,触发WM_PAINT消息,这是一个进队消息,在消息循环中调用。UpdateWindow 则是不进队的,直接调用窗口过程。而且,由于WM_PAINT的优先级比较低,所以有时候在用InvalidateRect使窗口无效的时候,如果窗口正在处理其他消息,就不会立刻刷新窗口,出现空白。这时候,如果需要立刻刷新窗口,就要执行UpdateWindow。或者SendMessag... 阅读全文
posted @ 2010-04-09 16:06 傲衣华少 阅读(269) 评论(0) 推荐(0) 编辑
摘要:旋转公式:XFORM xForm;double pi = 3.1415926;xForm.eM11 = (FLOAT)cos(pi/6);xForm.eM12 = (FLOAT)sin(pi/6);xForm.eM21 = (FLOAT)-sin(pi/6);xForm.eM22 = (FLOAT)cos(pi/6);xForm.eDx = (FLOAT)0.0;xForm.eDY = (FLOA... 阅读全文
posted @ 2010-04-08 22:15 傲衣华少 阅读(427) 评论(0) 推荐(0) 编辑
摘要:本来这个本身没太大的问题,在初始化窗口 如 oninitdialog,oncreate和关闭窗口 如onclose的时候,调用AnimateWindow即可实现窗口的动态效果打开和关闭。但是:(转下面一段话)编译时出现的问题 在实现动画窗口的程序时,笔者发现如果直接在VC中使用AnimateWindow函数,在编译时会报告出错。以上述程序为例,在编译时系统会报告: 'AnimateWindow' ... 阅读全文
posted @ 2010-04-07 21:27 傲衣华少 阅读(698) 评论(0) 推荐(0) 编辑
摘要:本篇演示实现仿QQ界面的异型菜单与滚动条自绘。 先讲解一下如何实现QQ的圆角菜单,这个要用到HOOK了,因为菜单是一种特殊的窗口,无法用FindWindow或通过HMENU来获取到窗口句柄,也就无法子类化。必须下钩子,这里下的是WH_CALLWNDPROC的钩子:C/C++ code查MSDN知道菜单的窗口类名是“#32768”,找到菜单窗口就好办了,子类化后就可以做手脚了... 阅读全文
posted @ 2010-03-15 09:52 傲衣华少 阅读(817) 评论(0) 推荐(0) 编辑
摘要:老是忘。CSize GetTextExtent( LPCTSTR lpszString, int nCount ) const;CSize GetTextExtent( const CString& str ) const;Return ValueThe dimensions of the string (in logical units) in a CSize object.Remark... 阅读全文
posted @ 2010-03-11 21:46 傲衣华少 阅读(481) 评论(0) 推荐(0) 编辑
摘要:本篇演示实现仿QQ界面的中间客户区。QQ是可以调整界面透明度的,但是调整了透明度却连中间客户区也变得半透明了。客户区毕竟是软件最重要的部分,是要与用户交互的,透明了就影响操作了,因此这里的客户区不学QQ,始终不透明。要实现不透明控件,只能创建一个弹出窗口,遮住主界面的客户区域,然后设定与主界面连动,即始终跟着主窗口移动及调整尺寸。这个方法并不是很好,但却几乎是唯一的方法。为什么说几乎是唯一的方法呢... 阅读全文
posted @ 2010-03-02 10:30 傲衣华少 阅读(1124) 评论(0) 推荐(0) 编辑
摘要:Download source files - 1.71 KbDownload demo project - 13.9 KbIntroductionHave you ever thought of how annoying it actually was to spend a lotof time doing a basic GUI for your simple applications ins... 阅读全文
posted @ 2010-01-28 09:40 傲衣华少 阅读(4752) 评论(1) 推荐(0) 编辑
摘要:这一篇本来应该演示如何实现仿QQ界面的中间客户区与底部工具栏,不过在实现底部工具栏的时候发现圆形按钮与工具栏自绘有不少取巧的方法,因此加插这么一篇,讲解一下如何实现圆形按钮和工具栏自绘。 前面几篇都是在讲解如何实现QQ顶部的标题栏,是用窗口贴图实现,也讲到底部区域会用不同的方法实现,因此这里底部的QQ按钮和工具栏不是在主窗口上画图了,而是用控件实现。并且这里讲解的方法不局限于使用RingSDK界面... 阅读全文
posted @ 2010-01-27 15:25 傲衣华少 阅读(979) 评论(0) 推荐(0) 编辑
摘要:本篇讲述如何进行界面调色。界面调色一般有两种方法,调色板和HSL色彩变换。调色板局限于256色,这里不采用,因此用HSL色彩变换实现。首先要了解一下什么是HSL色彩空间,完整且详尽的知识请到维基百科去看,链接地址:http://zh.wikipedia.org/wiki/HSL%E5%92%8CHSV%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4,这里简单讲一下(摘自维基... 阅读全文
posted @ 2010-01-18 14:50 傲衣华少 阅读(822) 评论(0) 推荐(0) 编辑
摘要:演示程序需要RingSDK库,编译有问题的请看本文的原始链接:http://blog.csdn.net/ringphone/archive/2010/01/10/5171490.aspx,这里就直接进入正题,讲解如何实现贴图按钮的三态模拟。所谓三态,就是按钮的正常状态,鼠标移上去的高亮状态以及按下状态。实际应该还有一个Disable状态,不过这个程序没有不可用的按钮,因此就不实现这个效果了。由于是... 阅读全文
posted @ 2010-01-11 10:13 傲衣华少 阅读(632) 评论(0) 推荐(0) 编辑
摘要:印象里仿QQ界面的程序应该有很多,搜了一下,虽然出来一大堆,排除了重复的,却只有两三个,没我想象的好。经常看到CSDN上有人问,QQ这个功能怎么实现,那个界面怎么实现,归纳了一下,决定写这么一个仿QQ界面程序,实用功能一律不实现,仅仿界面: 异型窗口 贴图界面 界面可调色,换底纹 仿QQ界面上的各种自绘控件 QQ2009界面仔细研究起来,其实还是很复杂的,完全模拟做到一模一样还是很花工夫的,用AP... 阅读全文
posted @ 2010-01-11 10:10 傲衣华少 阅读(1451) 评论(0) 推荐(0) 编辑
摘要:1.首先介绍一下什么是DC(设备描述表) Windows应用程序通过为指定设备(屏幕,打印机等)创建一个设备描述表(Device Context, DC)在DC表示的逻辑意义的“画布”上进行图形的绘制。DC是一种包含设备信息的数据结构,它包含了物理设备所需的各种状态信息。Win32程序在绘制图形之前需要获取DC的句柄HDC,并在不继续使用时释放掉。 2.CDC及其派生类 C... 阅读全文
posted @ 2009-12-23 12:43 傲衣华少 阅读(581) 评论(0) 推荐(0) 编辑