Welcome 微信登录

首页 / 软件开发 / C++

使用GDI+进行图像处理

使用GDI+进行图像处理

使用GDI+进行图像处理2008-02-26有人问我如何对图像进行旋转处理,也就是让用户歪着脖子看图像,用户的脖子拧断了怎么办?反正不会来找我......其实这个问题的一种解决方法是利用二维(x,y坐标中)矩阵转换实现图像旋转。使用高中时所学的三角知识或者大学中的线性代数知识就可以解决。其原理是已知一个点的坐标,那么这个点的旋转坐标可以通过(x*cos(A) + y*sin(A),- x*sin(A) + y*cos(A))求得,这里A是以弧度为单位的角度...
深入理解sizeof

深入理解sizeof

深入理解sizeof2010-09-14房秉毅最近在论坛里总有人问关于sizeof的问题,并且本人对这个问题也一直没有得到很好的解决,索性今天对它来个较为详细的总结,同时结合strlen进行比较,如果能对大家有点点帮助,这是我最大的欣慰了。一、好首先看看sizeof和strlen在MSDN上的定义:首先看一MSDN上如何对sizeof进行定义的:sizeof Operatorsizeof expressionThe sizeof keyword gives...
透明位图的显示

透明位图的显示

透明位图的显示2008-02-26 VC知识库 王骏包含透明色的位图的绘制方法有多种,最简单的方法是调用现成的函数:TransparentBlt,也可以通过自己的代码实现类似TransparentBlt的功能,实现过程也有两种形式,一种是事先做一张掩码位图,另一种是动态生成掩码位图。本文将介绍动态生成掩码位图绘制具有透明区域位图的方法。一、TransparentBlt 函数的使用TransparentBlt 函数在Windows98/Windows2000...
CString操作指南

CString操作指南

CString操作指南2010-09-14littleloach通过阅读本文你可以学习如何有效地使用CString。CString 是一种很有用的数据类型。它们很大程度上简化了MFC中的许多操作,使得MFC在做字符串操作的时候方便了很多。不管怎样,使用CString有很多特殊的技巧,特别是对于纯C背景下走出来的程序员来说有点难以学习。这篇文章就来讨论这些技巧。使用CString可以让你对字符串的操作更加直截了当。这篇文章不是CString的完全手册,但囊括...
位图文件读写综述

位图文件读写综述

位图文件读写综述2008-02-26 VC知识库 胡卓玮关于位图文件操作的资料很多。为了方便开发人员的工作,写下本文,介绍了位图文件结构,在此基础之上设计了通用类CFG_DIB,用于进行位图文件的读写操作。一、位图文件结构位图文件由三部分组成:文件头 + 位图信息 + 位图像素数据1、位图文件头。位图文件头主要用于识别位图文件。以下是位图文件头结构的定义:typedef struct tagBITMAPFILEHEADER { // bmfh WORD ...
声明函数指针并实现回调

声明函数指针并实现回调

声明函数指针并实现回调2010-09-14赵湘宁程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。声明函数指针回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给调用者从而实现调用。要实现回调,必须首先定义函数指针。尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法,便会发现函数指针的声明与函数声明非...
类似画笔的绘图控件

类似画笔的绘图控件

类似画笔的绘图控件2008-02-26 VC知识库 卫琳源代码运行效果图如下:想必大家都用过WINDOWS自带的画笔,这是一个小巧易用的软件。在业余时间,我模拟画笔自己开发了一个类似的程序(当然不如画笔那么功能丰富)。它主要完成的功能有画直线、曲线、圆、椭圆、矩形、多边形;支持剪贴板的操作;支持撤销、重复;保存成位图文件;打开位图文件。这个例子是用MFC开发的,为了方便使用,最后将转换成控件。建立单文档工程Demo,下面将分四部分介绍相关功能的实现。一、 ...
C++函数的可变参数详谈

C++函数的可变参数详谈

C++函数的可变参数详谈2010-09-14可变参数的英文表示为:variable argument.它在函数的定义时,用三个点号"."表示,用逗号与其它参数分隔.可变参数的特点:不像固定参数那样一一对应,也不像固定参数有固定的参数类型和参数名称;可变参数中个数不定可是传入的是一个参数也可以是多个;可变参数中的每个参数的类型可以不同,也可以相同;可变参数的每个参数并没有实际的名称与之相对应.由此可见,可变参数的形式非常自由而富有弹生.因些,它给那些天才程序...
真彩色转成高彩色的快速算法

真彩色转成高彩色的快速算法

真彩色转成高彩色的快速算法2008-02-26云风为什么要实时转换颜色深度?通常, 2D 游戏中的位图, 无论在外存中按什么颜色深度存放, 加栽后都被转换成了需要的颜色深度. 我们不太注意颜色深度转换说需要的时间.但是, 现在不同了. 云风未来的计划中, 最重要的一项是制作一个超级 2D 引擎. 将支持 Voxel 物体和实时光线处理这样的特性, 而且在光线处理中, 32 级的光线亮度级别也远远不够, 所以, 未来的 2D 游戏的发展趋势应该是采用真彩色,...
Google C++编程风格指南(一)

Google C++编程风格指南(一)

Google C++编程风格指南(一)2010-09-21背景Google的开源项目大多使用C++开发。每一个C++程序员也都知道,C++具有很多强大的语言特性,但这种强大不可避免的导致它的复杂,这种复杂会使得代码更易于出现bug、难于阅读和维护。本指南的目的是通过详细阐述在C++编码时要怎样写、不要怎样写来规避其复杂性。这些规则可在允许代码有效使用C++语言特性的同时使其易于管理。风格,也被视为可读性,主要指称管理C++代码的习惯。使用术语风格有点用词不...
轻松实现对外部位图的浏览

轻松实现对外部位图的浏览

轻松实现对外部位图的浏览2008-02-26 VC知识库 高岭显示位图一般的方法是利用控件,利用Cdib类是一种不错的方法,可以打开外部位图,但手头没有Cdib类文件怎么办,对于咱们这些新手来说真是苦恼,近日发现一种简单的方法,利用API函数实现。对于多个外部位图,我们还可以使用CFileFind这个被MFC封装的类配合浏览控件对位图进行浏览。1,在需要打开位图的地方加入以下代码:CFileDialog dlg(TRUE,"bmp",&...
Google C++编程风格指南(二):作用域

Google C++编程风格指南(二):作用域

Google C++编程风格指南(二):作用域2010-09-21作用域1. 命名空间(Namespaces)在.cc文件中,提倡使用不具名的命名空间(unnamed namespaces,译者注:不具名的命名空间就像不具名的类一样,似乎被介绍的很少:-()。使用具名命名空间时,其名称可基于项目或路径名称,不要使用using指示符。定义:命名空间将全局作用域细分为不同的、具名的作用域,可有效防止全局作用域的命名冲突。优点:命名空间提供了(可嵌套)命名轴线(...
如何在VC中显示动态的GIF

如何在VC中显示动态的GIF

如何在VC中显示动态的GIF2008-02-26 VC知识库 薛碧如果是使用VB,也许这个话题是多余的,因为VB有一个图象控件可以非常容易地实现各种格式的图象显示功能,然而对于VC却没有一个象样的控件可以达到这种效果,怎么办?经过一段日子的研究,发现只需要实现两步工作,就可以在VC中实现如同VB中一样的gif动态效果。本文将介绍的两部分是IPicture接口的使用和gif的储存格式,好象一听到储存格式,读者就不想再看下去了!其实不然,这里只须用到其最基本的...
Google C++编程风格指南(三):C++类

Google C++编程风格指南(三):C++类

Google C++编程风格指南(三):C++类2010-09-21关于类的注意事项,总结一下:1. 不在构造函数中做太多逻辑相关的初始化; 2. 编译器提供的默认构造函数不会对变量进行初始化,如果定义了其他构造函数,编译器不再提供,需要编码者自行提供默认构造函数;3. 为避免隐式转换,需将单参数构造函数声明为explicit;……类类是C++中基本的代码单元,自然被广泛使用。本节列举了在写一个类时要做什么、不要做什么。1. 构...
地图比例尺绘制

地图比例尺绘制

地图比例尺绘制2008-02-26胡卓玮运行效果图地图比例尺是地图当中不可缺少的元素。在地理信息系统软件的设计与开发过程中,如何绘制地图比例尺是一个需要认真解决的问题。在解决过程中有如下几个问题需要提出:1、采用什么工具?2、不同类型的地图比例尺如何分别绘制?3、如何控制地图比例尺的绘制精度?前面两个问题好解决。在VC中采用GDI即可完成各种图形的绘制,而通过研究不同类型的比例尺的特点,咱们完全可以通过GDI函数完成这些比例尺图形的绘制。咱们来详细探讨如何...
Google C++编程风格指南(四):智能指针和其他C++特性

Google C++编程风格指南(四):智能指针和其他C++特性

Google C++编程风格指南(四):智能指针和其他C++特性2010-09-211.对于智能指针,安全第一、方便第二,尽可能局部化(scoped_ptr); 2.引用形参加上const,否则使用指针形参;3.函数重载的使用要清晰、易读;4.鉴于容易误用,禁止使用缺省函数参数(值得商榷);5.禁止使用变长数组;6.合理使用友元……Google特有的风情Google有很多自己实现的使C++代码更加健壮的技巧、功能,以及有异于别处...
坐标变换

坐标变换

坐标变换2008-02-26sun xueqing摘要坐标变换是图形学中很基本的操作。无论绘制二维还是三维图形都会遇到。下面将会讲到:如何根据坐标架进行点的坐标变换。 如何根据坐标架生成变换矩阵。 如何通过矩阵作点的坐标变换。 曲线、曲面方程如何作变换。 1、如何根据坐标架进行点的坐标变换首先坐标架定义成:struct PNT3D{ double x,y,z;};struct FRAME{ PNT3D O, OX, OY, OZ;};假设有一个点 p ...
Google C++编程风格指南(五):命名约定

Google C++编程风格指南(五):命名约定

Google C++编程风格指南(五):命名约定2010-09-211.总体规则:不要随意缩写;2.宏、枚举等使用全部大写+下划线;3.变量(含类、结构体成员变量)、文件、命名空间、存取函数等使用全部小写+下划线,类成员变量以下划线结尾,全局变量以g_开头;4.参考现有或相近命名约定……命名约定最重要的一致性规则是命名管理,命名风格直接可以直接确定命名实体是:类型、变量、函数、常量、宏等等,无需查找实体声明,我们大脑中的模式匹配...
自己写FILTER改变画面颜色

自己写FILTER改变画面颜色

自己写FILTER改变画面颜色2008-02-26JspHuangdirectx show 的帮助文档是一个很好的参考资料。可是里面的很多东西都讲得太多了,而我们在开始接触的时候,都想从最简单的东西入手,然后逐渐深入,可是参考SDK里面的例子程序,总是云里雾里,特别是自己动手写FILTER,要拨开它的丛丛雾水,还真有些不容易。陆其明老师的《directx show 开发指南》对directx show 有比较经典的讲解,从它发表在网上的文章可以看到一部分。...
Google C++编程风格指南(六):代码注释

Google C++编程风格指南(六):代码注释

Google C++编程风格指南(六):代码注释2010-09-21注释注释虽然写起来很痛苦,但对保证代码可读性至为重要,下面的规则描述了应该注释什么、注释在哪儿。当然也要记住,注释的确很重要,但最好的代码本身就是文档(self-documenting),类型和变量命名意义明确要比通过注释解释模糊的命名好得多。注释是为别人(下一个需要理解你的代码的人)而写的,认真点吧,那下一个人可能就是你!1.注释风格(Comment Style)使用//或/* */,统...
<< 221 222 223 224 225 226 227 228 229 230 >>