Welcome 微信登录

首页 / 软件开发 / C++

Qt学习之路(26):反走样

Qt学习之路(26):反走样

Qt学习之路(26):反走样2010-03-09 51cto FinderCheng今天继续前面的内容。既然已经进入2D绘图部分,那么就先继续研究一下有关QPainter的东西吧!反走样是图形学中的重要概念,用以防止“锯齿”现象的出现。很多系统的绘图API里面都会内置了反走样的算法,不过默认一般都是关闭的,Qt也不例外。下面我们来看看代码。这段代码仅仅给出了paintEvent函数,相信你可以很轻松地替换掉前面章节中的相关代码。vo...
用VC编程阻止全局钩子的加载

用VC编程阻止全局钩子的加载

用VC编程阻止全局钩子的加载2011-04-19 VCKBASE 先说一下全局钩子是怎么进入到我们的程序里来的。假如有个程序A安装了WH_GETMESSAGE 的全局钩子,钩子函数在B.dll中,那么当其它程序在调用GetMessage函数从自己的消息队列 中取消息的时候,系统发现程序A安装了WH_GETMESSAGE的全局钩子,就会检查调用 GetMessage的进程是否加载了B.dll,如果没有,就调用LoadLibrary进行加载,然后调用 B.dl...
UTF-8与GB2312之间的互换

UTF-8与GB2312之间的互换

UTF-8与GB2312之间的互换2011-04-19 vckbase 吴康彬相信一定有不少的程序开发人员时常会遇到字符编码的问题,而这个问题也是非常让人头 痛的。因为这些都是潜在的错误,要找出这些错误也得要有这方面的开发经验才行。特别是 在处理xml文档时 ,该问题的出现就更加的频繁了,有一次用java写服务器端程序,用vc写 客户端与之交互。交互的协议都是用xml写的。结果在通讯时老是发现数据接受不正确。纳闷 !于是用抓取网络数据包工具抓取数据,后来才...
Qt学习之路(27):渐变填充

Qt学习之路(27):渐变填充

Qt学习之路(27):渐变填充2010-03-09 51cto FinderCheng前面说了有关反走样的相关知识,下面来说一下渐变。渐变是绘图中很常见的一种功能,简单来说就是可以把几种颜色混合在一起,让它们能够自然地过渡,而不是一下子变成另一种颜色。渐变的算法比较复杂,写得不好的话效率会很低,好在很多绘图系统都内置了渐变的功能,Qt也不例外。渐变一般是用在填充里面的,所以,渐变的设置就是在QBrush里面。Qt提供了三种渐变画刷,分别是线性渐变(QLin...
Qt学习之路(28):坐标变换

Qt学习之路(28):坐标变换

Qt学习之路(28):坐标变换2010-03-09 51cto FinderCheng经过前面的章节,我们已经能够画出一些东西来,主要就是使用QPainter的相关函数。今天,我们要看的是QPainter的坐标系统。同很多坐标系统一样,QPainter的默认坐标的原点(0, 0)位于屏幕的左上角,X轴正方向是水平向右,Y轴正方向是竖直向下。在这个坐标系统中,每个像素占据1 x 1的空间。你可以把它想象成是一张坐标值,其中的每个小格都是1个像素。这么说来,一...
UNICODE编程入门

UNICODE编程入门

UNICODE编程入门2011-04-19NorthTibet简介如果你编写的程序是针对非英语国家的用户,如中国、日本、东欧和中东地区,那么你一 定要熟悉 UNICODE 字符集。尤其是用 Visual C++/MFC 编写针对上述国家和地区的用户的程 序时,如果你想让自己的应用程序得到更广泛的用户,那么必须考虑代码 UNICODE 的兼容性 ,也就是说它既在 ASCII 模式下运行 ,也能在UNICODE 模式下运行。本文将介绍 UNICODE 的一些基...
VC++编程实现仿真火焰的视觉效果

VC++编程实现仿真火焰的视觉效果

VC++编程实现仿真火焰的视觉效果2011-04-19引言计算机仿真技术的基本原理都是一样的,神秘复杂的核爆同水波、火焰、烟雾等非常平常的自然现象在仿真处理过程中并没有什么太大的区别。都是经历了从实体对象到物理特性的总结,再由此建立数学模型并在数学模型基础之上提出仿真算法,最后通过计算机将其动态仿真出来等一系列步骤。本文以火焰作为仿真对象,通过对热源、热扩散以及对流等特性的分析对其建立了数学模型及仿真算法,为了能充分发挥计算机对图形的硬件加速,使用Dire...
Qt学习之路(30):Graphics View Framework

Qt学习之路(30):Graphics View Framework

Qt学习之路(30):Graphics View Framework2010-03-09 51cto FinderCheng现在基本上也已经到了2D绘图部分的尾声,所谓重头戏都是在最后压轴的,现在我们就要来看看在绘图部分功能最强大的Graphics View。我们经常说KDE桌面,新版本的KDE桌面就是建立在Graphics View的基础之上,可见其强大之处。Qt的白皮书里面这样写道:“Qt Graphics View 提供了用于管理和交互大...
Qt学习之路(31):一个简易画板的实现(QWidget)

Qt学习之路(31):一个简易画板的实现(QWidget)

Qt学习之路(31):一个简易画板的实现(QWidget)2010-03-09 51cto FinderCheng说实话,本来我是没有打算放一个很大的例子的,一则比较复杂,二来或许需要很多次才能说得完。不过,现在已经说完了绘图部分,所以计划还是上一个这样的例子。这里我会只做出一个简单的画板程序,大体上就是能够画直线和矩形吧。这样,我计划分成两种实现,一是使用普通的QWidget作为画板,第二则是使用Graphcis View Framework来实现。因为...
VC++开发的应用技巧三则放送

VC++开发的应用技巧三则放送

VC++开发的应用技巧三则放送2011-04-19帷幄1、创建向导对话框在使用具体某个软件的时候,我们常常会在该程序中使用向导 模式来建立新的文件,最典型的例子就是在Frontpage2000中或者Word2000中使用向导方式来 新建一个网页文件或者Word文档。那么看到别的程序都能提供人性化的向导对话框后,不知 您有没有什么冲动?如果有的话,不妨使用下面的代码来创建一个向导对话框:以 下是引用片段:void CMy56_s1Dlg::OnWiz(){ ...
Visual C++ 6.0编程实现打印功能

Visual C++ 6.0编程实现打印功能

Visual C++ 6.0编程实现打印功能2011-04-19 天极 刘涛Visual C++6.0是开发Windows应用程序的强大工具,但是要通过它实现程序的打印功能, 一直是初学者的一个难点,经常有朋友询问如何在VC中实现打印功能,他们往往感到在MFC提 供的框架内实现这个问题很复杂,不知道如何下手。本例针对这个问题,介绍一种简单的方 法实现文字串的打印功能,读者朋友可以在此基础上稍微改动一下,就可以实现文件、图像的 打印功能。一、实现方法在Win...
Qt学习之路(32):一个简易画板的实现(Graphics View)

Qt学习之路(32):一个简易画板的实现(Graphics View)

Qt学习之路(32):一个简易画板的实现(Graphics View)2010-03-09 51cto FinderCheng这一次将介绍如何使用Graphics View来实现前面所说的画板。前面说了很多有关Graphics View的好话,但是没有具体的实例很难说究竟好在哪里。现在我们就把前面的内容使用Graphics View重新实现一下,大家可以对比一下看有什么区别。同前面相似的内容就不再叙述了,我们从上次代码的基础上进行修改,以便符合我们的需要。...
MFC编写的仿Windows计算器

MFC编写的仿Windows计算器

MFC编写的仿Windows计算器2011-04-22 vckbase 首先你应该了解面向对象的基于消息驱动的Windows消息编程,当然,对于编写这个计算 器,你不必知道太多的windows编程,你重要会编写基于对话框的简单应用程序就可以了。首先,让我们来仔细了解一下mircosoft的计算器吧,我们发现它是一个基于对话框 的含有两的主对话框、一个关于对话框、一个菜单的应用程序。也就是说,我们应该创建一 个基于对话框的应用程序,并且为其添加一个菜单和一个...
Qt学习之路(33):国际化(上)

Qt学习之路(33):国际化(上)

Qt学习之路(33):国际化(上)2010-03-09 51cto FinderCheng2D绘图部分基本告一段落,还在想下面的部分要写什么,本来计划先说下view-model的相关问题,但是前面看到有朋友问关于国际化的问题,所以现在先来说说Qt的国际化吧!Qt中的国际化的方法有很多,常用的有使用QTextCodec类和使用tr()函数。前者将编码名称写到代码里面,除非你使用Unicode 编码,否则国际化依然是一个问题;后者就不会有这个问题,并且这也是Q...
文件系统识别器

文件系统识别器

文件系统识别器2011-04-22TimiXu文件系统识别器是一个标准的NT内核模式驱动程序。它只实现一项功能:检查物理介质设 备,如果它能够识别存储介质的格式便加载相应的文件系统驱动程序。你可能要问:为什么 不把所有的文件系统一起加载呢?因为系统几乎从不需要加载所有文件系统驱动程序,用一 个小驱动可以节约数百K系统内存。实际上,所有标准的NT物理介质文件系统都利用文件系统 识别器。举个例子来说,如果CD-ROM没有被访问,那么CDFS文件系统驱动程序将不...
Qt学习之路(34):国际化(下)

Qt学习之路(34):国际化(下)

Qt学习之路(34):国际化(下)2010-03-09 51cto FinderCheng上次说了国际化的过程,现在来看一下具体的国际化的相关代码。在代码中,我们使用tr()将需要翻译的字符串标记出来。lupdate工具就是提取出tr()函数中的相关字符串。tr()函数是QObject类的一个static函数,其签名如下:static QString tr(const char *sourceText, const char *comment = 0, i...
正确使用namespace(命名空间)

正确使用namespace(命名空间)

正确使用namespace(命名空间)2011-04-22zhigang命名空间(namespace)在C++中的作用非同一般。本文目的不在于阐述命名空间的语法, 而在于演示命名空间的使用方法,或者说是使用命名空间的小窍门。命名空间可以简单的将一些命名(name)用另一个命名打包封装起来。比方说:namespace net { class Socket { ... };}...net::Socket socket;经过这样的封装以后,如果在两个库...
<< 101 102 103 104 105 106 107 108 109 110 >>