FLTK学习-7-使用FLUID编程(5)

11.9 Image Labels

      ImageInactive域中的图像文件的内容被写入到.cxx文件中。如果多个构件共享相同的图像,则只有一个拷贝被写入。因为图像数据在生成的源码中,所以你只需要分发C++的源码即可而不需要图像文件本身。

      然而图像文件名保存在.fl文件中,所以在读.fl文件时你需要图像文件。图像文件名路径是相对于fl文件的路径而不必放到当前路径下,我们建议你要么将图像与fl文件放到同一目录下要么使用绝对路径名。

所有文件类型的注意事项

Notes for All Image Types

      FLUID使用你的X服务器的默认图像运行【??】。这可能是可以给出抖动图像的8位图像。在你的代码中第一个窗口显示之前加入代码”Fl::visual(FL_RGB)”到你的实际程序中可能获得更好的结果。所有使用同一幅图像的构件共享相同的代码和源X象图。所以一旦你已经将一幅图像放到的一个构件中,则将相同的图像放入其他的构件中几乎不费吹灰之力。

      如果你在FLUID正使用一幅图像时编辑这幅图像,那么唯一使得FLUID能够再次读取图像文件的方法是将图像从使用它的所有构件中移除或者从fl文件中重新加载。

      不要仰仗FLTK对超出构件的图像的裁剪行为,因为在将来的版本中这可能就不会奏效了。在标签内部的裁剪可能就不会改变了。

      为更精确的放置图像,可以创建一个新的box构件,将图像作为标签放入到其中。

XBM (X 位图)文件

      FLUID读取使用C源码定义的位图的X位图文件【??】。有时文件保存的扩展名为.h或者.bm而不是标准的.xbm

      FLUID用代码来构造Fl_Bitmap图像,并使用它作为构件的标签。在位图中的位1使用构件标签的颜色画出。你可以在FLUID的构件属性面板中改变这个颜色,位0是透明的。

      X分发中的位图程序足够编辑位图的任务了。

XPM (X 象图)文件

      FLUIDlibxpm库一样读取X象图文件。这些文件使用C源文件定义象图,文件扩展名通常是.xpm

      FLUID用代码来构造Fl_Pixmap图像,并使用它作为构件的标签。构件的标签颜色将不忽略,即使是两种颜色的图像也可以是位图【??】。XPM文件可以标记一个单独的颜色作为透明色,FLTK使用这个信息来为图像生成一个透明掩膜。

      我们还没有发现号的小图标图像编辑器,对于象图我们使用过XPaintKDE图标编辑器。

BMP文件

      FLUID读取windowsBMP文件,BMP图像经常作为WIN32程序的图标。FLUIDBMP文件转为XPM格式,并且使用Fl_VMP_Image图像作为构件标签。对于透明的处理与XPM文件一样,写入源文件中的所有图像数据都是未压缩的,所以代码文件可能比bmp文件大得多。

GIF文件

      FLUID读取在HTML文档中经常使用的GIF图像,FLUIDGIF文件转换为XPM格式并使用Fl_GIF_Image图像作为构件的标签。对于透明的处理与XPM文件一样,写入源文件中的所有图像数据都是未压缩的,所以代码文件可能比gif文件大得多。只有第一幅GIF图像是动态的【??】。

JPEG文件

      如果FLTK使用的JPEG支持编译的,FLUID就可以读取JPEG图像文件,JPEG文件常用在数字图像中,FLUID使用Fl_JPEG_Image图像作为构件标签,将未压缩的RGB或者灰度数据写入源文件中。

PNG (Portable Network Graphics)文件

      如果FLTK使用了PNG支持编译,则FLUID可以读取经常在HTML文档中用到的PNG图像文件。FLUID使用Fl_PNG_Image图像作为构件标签,将未压缩的RGB或者灰度数据写入源文件中。PNG图像可以为部分透明提供一个完整的alpha通道,FLTK在每个平台上都尽力支持该功能。

11.10 FLUID的国际化

      FLUID支持构件标签字符串的国际化(简称I18N)。偏好窗口提供了关于I18N的选项。

11.10.1 I18N方法

      FLUID支持关于三种方法用于I18N:什么都不用、使用GUN gettext或者使用POSIX catgets。什么都不使用的方法是默认的,仅仅将标签字符串传递给构件构造函数。

      GUN gettext方法使用GUN gettext(或者一个相似的基于文本的I18N库)在调用构件的构造函数之前返回一个本地字符串。

      POSIX catgets方法使用POSIX catgets函数在调用构件构造函数之前从消息目录中返回一个编号的消息。

11.10.2 使用GNU gettext完成I18N

      FLUID中的GUN gettext对代码的支持被限制在只能调用函数或者宏来返回本地标签。你仍然需要调用setlocale()textdomain()或者bindtextdomain()来选择合适的语言和消息文件。

      要使用GNU gettext打开偏好窗口,从Use:选择器中选择”GNU gettext”,两个新的输入域将出现,可以控制返回本地标签字符串时包含的文件以及使用的函数或者宏名。

 

11.11 使用GNU gettext的国际化

      #include域控制I18N的包含头文件,默认是GNU gettext的标准I18N文件<libintl.h>

      Function域控制返回本地消息的函数(或者宏),默认时gettext函数将被调用。

11.10.3 使用POSIX catgets完成I18N

      FLUIDPOSIX catgets的代码支持允许你对所有的接口使用一个全局的消息文件或者对每个fl文件一个特殊的文件。你仍然需要调用setlocale()来选择合适的语言。

要为I18N使用POSIX catgets,打开偏好窗口,从Use:选择器中选择” POSIX catgets”,三个新的输入域将出现,可以控制返回本地标签字符串时的包含文件、目录文件以及设置的编号。

11.12 使用POSIX catgetst实现国际化

#include域控制I18N的包含头文件,默认是POSIX catgetst的标准I18N文件<nl_types.h>

File域控制返回本地消息时使用的目录文件变量的名字【??】。默认时file域为空强制fl文件中定义的所有窗口使用本地(静态)的目录文件。

Set域目录文件中设置的编号。默认的设置为1,很少需要做修改。

11.11 已知的缺陷

      可以使用#if 0#endif声明块来临时封闭已经设计好的代码,这可以有效的避免代码块的编译,但是,该段生成的静态代码和数据(菜单项、图像、包含声明等)仍然会生成,而且可能引起编译时警告。

 

【后记】:终于翻译完了,本来翻译了一半时就不想再做了,虽然自己英语水平很烂,但是感觉这手册像是用英语的方言写的,各种语法的不通,最后本着善始善终的原则总算把它翻译完了。自己本来倒也不是为了使用FLUID而翻译的,FLUID是一个用来设计界面并且可以将界面装换为代码的工具,翻译这个手册是为了了解一下它都有些什么功能,想参考参考它的源码,从中吸取点营养。最终硬着头皮翻译完了,将就着看吧,很多地方自己也不懂。

完整的word附上:http://download.csdn.net/detail/ljbsdu/4704452 辛苦了这么久,总得有点辛苦费,3个积分,没有积分的可以联系我。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值