VC++.NET的GDI+入门之位图和图标

来源:百度文库 编辑:神马文学网 时间:2024/04/27 17:24:43
位图
位图是用于在窗体上显示图片的图形对象,它是各种场合下图形对象常用的一种类型。例如,位图可以作为窗体的背景,下面是用于某些Windows版本随带的弹球游戏图:

图一、弹球游戏图
位图也可以用来装饰对话框来达到美学效果。下图WordPerfect 2002安装程序界面上的位图就显示了这种效果。

图二、带有位图的对话框效果图
位图最常用的用法可能还是被作为工具条上的图片。

图三、带有位图的工具条
一、创建一个位图
为了创建一个位图,可以使用任何图形应用程序,包括Windows安装的画笔程序。在Visual C++ .NET中,为了创建一个位图,你可以在主菜单上点击"Project -> Add Resource..."。

图四、Visual C++ .NET中的添加资源对话框
在添加资源对话框中,选择位图,并点击new按钮,一个新的以"BMP"为扩展名的文件将添加到工程脚本当中。这时候你可以自己进行设计位图,直道满意为止。

图五、设计位图实例
实例:创建一个位图
1、生成一个新的窗体应用程序,命名为Resources1;
2、右击下面的图片并单击复制菜单;

图六、资源图片
3、启动微软的画笔程序,并将图片复制到该程序。
4、为了改变蝴蝶的方向,在画笔程序中选择"Image -> Flip/Rotate..."
5、在"Flip and Rotate"对话框中,选择水平单选框并点击"OK"按钮;

图七、水平翻转后的资源图片
6、将文件命名为"Butterfly.bmp",并将文件存储在在当前工程文件夹中。
7、返回Visual Studio开发环境。
二、使用位图
为了支持位图,GDI+提供了Bitmap类,Bitmap类是建立在抽象的Image类基础上的,如果创建了一个位图并将它存储为一个文件,可以将文件的路径传递给这个类的构造函数,如下所示:
public: Bitmap(String *filename);
一旦已经准备好了图片,为了将它呈现给用户,可以调用Graphics::DrawImage()方法。根据所有可能的需要,这个方法重载了很多版本,其中的一个版本使用如下的语法:
public: void DrawImage(Image *img, Point point);
第一个参数是一个先前已经初始化了的位图对象,第二个参数规定了图片将画在什么位置,这个位置对应于图片的左上角。
下面是一个例子代码:
private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
Bitmap *bmpFood = new Bitmap(S"FoodBasket.bmp");
e->Graphics->DrawImage(bmpFood, 0, 0);
}

图八、例子代码显示的图片
实例:显示一个位图
1、点击窗体的空白区域,确定已经选择了该窗体,在属性窗口中选择事件按钮;
2、为了显示图片,双击重画区域,并输入以下代码:
private: System::Void Form1_Paint(System::Object * sender,
System::Windows::Forms::PaintEventArgs * e)
{
Bitmap *butterfly = new Bitmap(S"Butterfly.bmp");
e->Graphics->DrawImage(butterfly, 10, 10);
}
3、执行上述代码进行测试,。

图九、代码测试效果图
4、关闭窗体返回开发环境。
图标
一、图标
与位图一样,位图用来在窗体对象上显示图形,不同的是,位图可以具有窗体所需要的任何尺寸,而图标的尺寸是受到限制的。这是因为图标在一个应用程序中扮演着不同的角色。
图标用来在窗体管理器和我的电脑中代表一个文件夹。

图十、Windows下的各种图标
二、创建图标
为了创建一个图标,可以再一次使用具有这种能力的应用程序。通常情况下,可以使用Visual Studio .NET来创建或设计一个图标。为了这么做,在Visual Studio的主菜单上,点击Project -> Resource…,在增加资源对话框中,选择图标,然后点击NEW按钮。
当开始设计一个图标时,呈现在你面前的是一个32X32像素的绘图区域。这是作为大图标显示时的尺寸。这有一个例子来自于Visual Studio .NET中New File对话框中的模板列表:

图十一、模板列表中标的对话框
在某些情况下,你可能要允许用户使用小图标,它的尺寸是16X16像素,如下图所示:

图十二、小图标
为了使小图标成为可能,可以关联第二个图标到一个32x32的图标,你所使用的用来设计图标的应用程序应该为你增添这第二个图标提供了方便。在Visual Studio中,可以在显示一个图标时,点击主菜单上的Image -> New Image Type...,然后选择16x16, 256种颜色,然后选择"OK"键。
无论你是创建一个版本还是两个版本的图标,它门全都存储在一个文件中,扩展名是.ico。
实例:创建图标
1、在主菜单上,点击Project -> Add Resource...;
2、在添加资源对话框中,双击图标

3、在图像编辑工具条中,点击Fill工具
,右击绿色区域将它变更为白色;
4、在图象编辑工具条中,点击"LINE"按钮 ;
5、在颜色面板中选择蓝色;
6、在空白的画图区域,通过鼠标拖、拉操作、选择颜色等,绘制下图(16X16图标设计方法不再赘述);

图十三、自画的图标
7、在资源标签中,点击IDI_ICON1节点;
8、在属性窗口,将文件名更改为Diamong.icon
9、将ID值更改为IDI_DIAMOND。
三、使用图标
为了支持图标操作,GDI+提供了Icon类,在应用程序中使用图标,可以首先使用Icon类的构造函数来声明一个指向图标的指针,如果图标存储在文件中,使用的最简单的构造函数的语法如下:
public: Icon(String *filename);
对于这个构造函数,图标的文件名或路径作为参数来传递,创建图标志以后,如果只想使用一个尺寸的版本,可以使用下面的构造函数声明变量。
public: Icon(Icon *original, Size size);
public: Icon(Icon *original, int width, int height);
初始化Icon变量后,如果你想获得它的尺寸,你可以操作它的Width、Height或Size属性。
正如上面已经提到的,图标很多用途,例如,可以在控件中显示它,为了这么作,可以调用Graphics::DrawIcon()方法,这个方法重载了两个版本。
public: void DrawIcon(Icon *icon, Rectangle targetRect);
public: void DrawIcon(Icon *icon, int x, int y);
第一个版本准许你说明图标的位置和尺寸,第二个版本只允许你定义图标的位置。
实例:使用图标
1、显示窗体,然后双击窗体;
2、为了在标题条上显示图标,按照下述代码实现以下事件
private: System::Void Form1_Load(System::Object * sender, System::EventArgs * e)
{
Drawing::Icon *icoMain = new Drawing::Icon(S"Diamond.ico");
this->Icon = icoMain;
}
3、执行应用程序,效果如图所示:

图十四、标题条上显示图标
4、关闭窗体并返回开发环境。