6.1.8 加载和保存图形文件 仅存在于应用程序运行时的图形图像价值很有限。经常会想要使用相同的图片,或保存已创建的图片以备使用。使用VCL的图像控件使得从文件加载图片或保存图片都变得很容易。用来加载、保存和替换图形图像的VCL组件支持许多图形格式,包括位图文件、图元文件、glyphs等等。还有其他可安装的图形类。
加载和保存图形文件的方法和处理其他文件的方法类似,这些方法在下列各节中说明: · 从文件加载图片。 · 把图片保存到文件中。 · 替换图片。
1.从文件加载图片 若应用程序需要修改图片,或需把图片在应用程序外保存,以便其他人或其他应用程序可修改图片,则应用程序就需提供从文件加载图形的能力。要从图形文件中加载图片给图像控件,可调用图像控件的Picture对象的LoadFromFile方法。
下列代码从打开文件对话框中取得文件标题,并将文件载入到名为Image的图像控件中:

2.把图片保存到文件中 VCL图片对象也能加载和保存多种格式的图形,并且可创建和注册自己的图形文件格式以便图片对象也能加载和保存它们。要把图像控件的内容保存到文件中,调用图像控件Picture对象的SaveToFile方法。SaveToFile方法需要欲保存到的文件的文件名。如果图片是新创建的则可能没有文件名,或者用户可能希望把已有图片保存成另一个文件。这些情况,应用程序在保存之前需要从用户处取得文件名,这 在下节中将会说明。
下列两个事件处理程序,分别添加给File|Save和File|SaveAs菜单项,用于处理重新保存已命名文件、保存未命名的文件、以新的文件名保存现有的文件:

3.替换图片 随时都可替换图像控件中的图片。若将新图形分配给已有图形的图片对象,新图形会替换已有的图形。要替换图像控件中的图片,将新图形分配给图像控件的Picture对象。 创建新图形的方法和创建初始图形的方法一样,但应提供让用户选择除初始缺省大小外其他尺寸的方法。最简单的方法是使用对话框,如图6-1所示。

这个对话框是在GraphEx(在EXAMPLES/DOX/GRAPHEX目录下)工程包含的BMPDlg程序单元中创建的。在工程中使用这个对话框,先将头文件BMPDlg.hpp加到主窗体单元的.cpp文件中。接着可以把事件处理程序加到File|New菜单项的OnClick事件。如下例:  
|