第14章 对话框

Size: px
Start display at page:

Download "第14章 对话框"

Transcription

1 随 µc/gui 一起提供的普通字体大部分是标准字体 实际上, 你或许会发现这些字体对于 你的应用已完全足够 对单独的字体, 想了解更详细的情况, 请参考第 25 章 : 标准字体, 这一章了 µc/gui 中所有的字体, 及这些字体在屏幕上显示时的所有字符 µc/gui 支持 ASCII,ISO 及 Unicode 通常,µC/GUI 按 8 位字符进行编译, 允许最大为 256 的不同的字符代码,32 之前的编码除外, 这部分字符作为控制字符保留 字符是否有效取决所选择的字体 ( 即该字体是否包括有所需的字符 ) 第 1 页

2 7.1 有效字体 当前 µc/gui 版本提供 4 种字体 : 等宽位图字体, 比例位图字体, 带有 2bpp(bit/pixel) 用于建立反混淆信息的比例位图字体, 带有 4bpp( 位 / 像素 ) 用于建立反混淆信息的反混淆字 体 ( 更多关于抗锯齿字体的信息请参考第 15 章 : 抗锯齿 ) 所有的字体会与你的应用相连接, 而字体的选择在 GUIConf.h 中定义 我们推荐编译所有的字体并将它们作为一个库模块进行连接, 或者将所有的字体工程文件放入一个你能与你的应用相连接的库当中 这种方法可以让你确定那些你在应用中需要的字体被真正连接 字体转换器 ( 在一本独立的手册中 ) 用于创建附加的字体 为了能在你的应用中使用一种字体, 你必须要做到下面几点 : 字体在与 µc/gui 规范相兼容的 C 文件, 工程文件或库这三种文件中任一种当中 字体文件与你的应用链接 字体的要包含在 GUIConf.h 中 ( 这很必要, 这是为了避免由于没有声明的外部常量而产生的编译警告 ) 增加字体 一旦你连接过一个如上面所的字体文件, 将要连接的字体声明为一个外部常量 GUI_FONT, 如下面范例所显示的那样 : 范例 extern const GUI_FONT GUI_FontNew; int main (void) { GUI_Init () ; GUI_Clear(); GUI_SetFont(&GUI _FontNew); GUI_DispString("Hello world\n"); return 0; } 选择字体 µc/gui 提供不同的字体, 总会有其中的一种被选中 可以通过调用函数 GUI_SetFont() 第 2 页

3 改变所选择的字体, 该函数选择字体用于伴随当前任务的文字输出 如果在你的应用中没有字体被选择, 则使用默认字体 该默认值由 GUIConf.h 配置, 可 以进行修改 你应该确认默认字体是你的应用中真正用到的字体, 因为默认字体会与你的应 用连接, 因此可能会耗尽 ROM 存储空间 µc/gui 的兼容性 老版本的 µc/gui 使用一个不同的字体概念, 字体在一个字体表中列出, 它们在表格中的位置通过一个整数选择 由于缺乏灵活性, 这种概念改变了 新的概念较原来的概念提高了 一个等级, 字体标识符 ( 例如 F6x8) 依然有效 7.2 字体 API 下表列出了与字体处理相关的函数, 在各自的类型中按字母顺序进行排列 函数的详细 后面列出 函数 说明 字体的选择 GUI_GetFont() 返回当前选择字体的指针 GUI_SetFont() 设置当前字体 字体相关函数 GUI_GetCharDistX() 返回当前字体中指定字符的宽度 (X 轴, 以像素为单位 ) GUI_GetFontDistY() 返回当前字体 Y 轴方向间距 GUI_GetFontInfo() 返回一个包含字体信息的结构 GUI_GetFontSizeY() 返回当前字体的高度 (Y 轴, 以像素为单位 ) GUI_GetStringDistX() 返回一个使用当前字体的文本的 X 轴尺寸 GUI_GetYDistOfFont() 返回一个特殊字体的 Y 轴间距 GUI_GetYSizeOfFont() 返回一个特殊字体的 Y 轴尺寸 GUI_IsInFont() 估计一个指定的字符是否在一种特殊字体里面 7.3 一种字体的选择 GUI_GetFont() 返回当前选择字体的指针 第 3 页

4 const GUI_FONT * GUI_GetFont(void) GUI_SetFont() 设置用于文字输出的字体 const GUI_FONT * GUI_SetFont(const GUI_FONT * pnewfont) ; pfont 所选择及使用字体的指针 返回值 返回先前所选择字体的指针, 这样你可以在稍后一点恢复原先使用的字体 范例 用 3 种不同尺寸显示样本文字, 然后恢复原先的字体 : void DispText(void) { const GUI_FONT GUI_FLASH* OldFont=GUI_SetFont(&GUI_Font8x16); GUI_DispStringAt("This text is 8 by 16 pixels", 0, 0); GUI_SetFont(&GUI_Font6x8); GUI_DispStringAt("This text is 6 by 8 pixels", 0, 20); GUI_SetFont(&GUI_Font8); GUI_DispStringAt("This text is proportional", 0, 40); GUI_SetFont(OldFont); // 恢复字体 } 上面范例程序运行结果的屏幕截图 : 第 4 页

5 用不同的字体显示文字和数值 : GUI_SetFont(&GUI _Font6x8); GUI_DispString("The result is:"); GUI_SetFont(&GUI_Font8x8); GUI_DispDec(42,2); // 显示文字 // 显示数值 上面范例程序运行结果的屏幕截图 : 7.4 字体相关函数 GUI_GetCharDistX() 返回当前选择字体中用于显示一个指定字符的宽度 (X 轴, 以像素为单位 ) int GUI_GetCharDistX(U16 c); c 需计算宽度的字符 GUI_GetFontDistY() 返回当前选择字体 Y 轴方向间距 第 5 页

6 int GUI_GetFontDistY(void); 附加信息 Y 轴方向间距是一个以像素为单位在两个文字相邻的线之间的垂直距离 返回值是当前选 择字体入口 Y 轴方向距离数值 该返回值对于比例字体及等宽字体都有效 GUI_GetFontInfo() 计算指向一个特殊字体的 GUI_FONTINFO 结构的指针 void GUI_GetFontInfo(const GUI_FONT*pFont, GUI_FONTINFO* pfi); pfont pfi 指向字体的指针 指向一个 GUI_FONTINFO 结构的指针 附加信息 GUI_FONTINFO 结构的定义如下 : typedef struct { U16 Flags; }GUI_FONTINFO; 变量标志的成员使用以下数值 : GUI_FONTINFO_FLAG_PROP GUI_FONTINFO_FLAG_MONO GUI_FONTINFO_FLAG_AA GUI_FONTINFO_FLAG_AA2 GUI_FONTINFO_FLAG_AA4 第 6 页

7 范例 标志 获得 GUI_Font6x8 字体的信息 计算后,FontInfo.Flags 包含 GUI_FONTINFO_FLAG_MONO GUI_FONTINFO FontInfo; GUI_GetFontInfo(&GUI_Font6x8, &FontInfo); GUI_GetFontSizeY() 返回当前选择字体的高度 (Y 轴, 以像素为单位 ) int GUI_GetFontSizeY(void); 附加信息 返回值是当前选择字体入口 Y 轴方向大小数值 该值小于或等于通过执行 GUI_GetFontDistY() 获得的返回值 Y 轴方向间距 该返回值对于比例字体及等宽字体都有效 GUI_GetStringDistX() 返回在当前选择的字体中用于显示一个指定字符串的 X 轴尺寸 int GUI_GetStringDistX(const char GUI_FAR *s); s 字符串的指针 第 7 页

8 GUI_GetYDistOfFont() 返回一种特殊字体的 Y 轴方向间距 int GUI_GetYDistOfFont(const GUI_FONT* pfont); pfont 字体的指针 附加信息 参考 GUI_GetFontDistY() GUI_GetYSizeOfFont() 返回一种特殊字体的 Y 轴方向尺寸 int GUI_GetYSizeOfFont(const GUI_FONT* pfont); pfont 字体的指针 附加信息 参考 GUI_GetFontSizeY() GUI_IsInFont() 估计一个指定的字符是否在一种特殊字体里面 第 8 页

9 char GUI_IsInFont(const GUI_FONT*pFont, U16 c); pfont c 字体的指针 搜索的字符 附加信息 如果指针 pfont 设置为 0, 则使用当前选择字体 范例 估计字体 GUI_FontD32 是否包含 X : if (GUI_IsInFont(&GUI_FontD32, 'X') == 0) { GUI_DispString("GUI_FontD32 does not contains 'X' "); } 7.5 字符设置 ASCII µc/gui 支持所有的 ASCII 字符 下表是从 32 到 127 共 96 个字符 : Hex A B C D E F 2x! " # $ % & ' ( ) * +, -. / 3x : ; < = >? A B C D E F G H I J K L M N O 5x P Q R S T U V W X Y Z [ \ ] ^ _ 6x ` a b c d e f g h i j k l m n o 7x p q r s t u v w x y z { } ~ 很不幸, 因为 ASCII 立足于美国用于信息互换的标准, 它为美国的需要而制定 它不包括用于欧洲语言的任何特殊的字符, 诸如 Ä,Ö,Ü,á,à 等等 没有单独的标准适合这些 ASCII 字符的 欧洲扩展 现在已经有几个不同的标准, 其中一个用于互联网并且被大多数 Windows 应用程序所接受的标准是 ISO8859-1, 一个 ASCII 字符的扩展集 第 9 页

10 ISO 西文 拉丁文字符设置 µc/gui 支持 ISO , 字符的定义如下表如示 : 代码 字符 160 non-breaking space 161 inverted exclamation 162 cent sign 163 pound sterling 164 general currency sign 165 yen sign 166 broken vertical bar 167 section sign 168 umlaut (dieresis) 169 copyright 170 feminine ordinal 171 left angle quote, guillemotleft «172 not sign 173 soft hyphen 174 registered trademark 175 macron accent 176 degree sign 177 plus or minus ± 178 superscript two ² 179 superscript three ³ 180 acute accent 181 micro sign µ 182 paragraph sign 183 middle dot 184 cedilla 185 superscript one ¹ 186 masculine ordinal 187 right angle quote, guillemot right» 188 fraction one-fourth ¼ 189 fraction one-half ½ 190 fraction three-fourth ¾ 191 inverted question mark 192 capital A, grave accent À 193 capital A, acute accent Á ª º 第 10 页

11 194 capital A, circumflex accent  195 capital A, tilde à 196 capital A, dieresis or umlaut mark Ä 197 capital A, ring Å 198 capital A, diphthong (ligature) Æ 199 capital C, cedilla Ç 200 capital E, grave accent È 201 capital E, acute accent É 202 capital E, circumflex accent Ê 203 capital E, dieresis or umlaut mark Ë 204 capital I, grave accent Ì 205 capital I, acute accent Í 206 capital I, circumflex accent Î 207 capital I, dieresis or umlaut mark Ï 208 Eth, Icelandic Ð 209 N, tilde Ñ 210 capital O, grave accent Ò 211 capital O, acute accent Ó 212 capital O, circumflex accent Ô 213 capital O, tilde Õ 214 capital O, dieresis or umlaut mark Ö 215 multiply sign 216 capital O, slash Ø 217 capital U, grave accent Ù 218 capital U, acute accent Ú 219 capital U, circumflex accent Û 220 capital U, dieresis or umlaut mark Ü 221 capital Y, acute accent Ý 222 THORN, Icelandic Þ 223 sharp s, German (s-z ligature) ß 224 small a, grave accent à 225 small a, acute accent á 226 small a, circumflex accent â 227 small a, tilde ã 228 small a, dieresis or umlaut mark ä 229 small a, ring å 230 small ae diphthong (ligature) æ 231 cedilla ç 232 small e, grave accent è 第 11 页

12 233 small e, acute accent é 234 small e, circumflex accent ê 235 small e, dieresis or umlaut mark ë 236 small i, grave accent ì 237 small i, acute accent í 238 small i, circumflex accent î 239 small i, dieresis or umlaut mark ï 240 small eth, Icelandic ð 241 small n, tilde ñ 242 small o, grave accent ò 243 small o, acute accent ó 244 small o, circumflex accent õ 245 small o, tilde õ 246 small o, dieresis or umlaut mark ö 247 division sign 248 small o, slash ø 249 small u, grave accent ù 250 small u, acute accent ú 251 small u, circumflex accent û 252 small u, dieresis or umlaut mark ü 253 small y, acute accent ý 254 small thorn, Icelandic þ 255 small y, dieresis or umlaut mark ÿ Unicode Unicode 是最终的字符编码, 它是一个基于 ASCII 和 ISO 的国际标准,UNICODE 要求 16 位的字符, 因为所有的字符都有它们的固有码 目前, 已经定义了超过 30,000 个不同的字符 不过, 不是所有的字符图像能在 µc/ GUI 中定义 定义这些附加的字符是使用者的工作 请联系 Micrium 公司, 或你的发行人, 因为我们可能有你所需要的字符 7.6 字体转换器 能用于 µc/gui 的字体必须在 C 中定义为 GUI_FONT 结构 该结构或者由这些结构引用的与之相当的字体数据, 可能相当大 手工产生这些字体时耗时巨大且效率很低 因此我们 推荐使用字体转换器, 它能够从字体自动产生 C 文件 字体转换器是一个简单的 Windows 程序 你只需在程序载入一种 Windows 安装字体, 如果有需要则对其进行编辑, 然后将其保存为 C 文件 该 C 文件可以进行编译, 你需要 第 12 页

13 的字体就可以随 µc/gui 一道在屏幕上显示 默认情况下字符代码 0x00~0x1F 及 0x80~0x9F 是被禁止的 下面为字体转换器截入一 种字体的范例的屏幕截图 : 字体转换器在一份单独的资料中, 你可以与 Micrium 公司联系以获得这份资料 第 13 页

ü Ä ä ä ï ï ü ä ä

ü Ä ä ä ï ï ü ä ä ü Ä ä ä ï ï ü ä ä ü ü ü ä 50000476_0047_2 2 3 316 ó é â á ó ü ü ü ü ü ü ü ü ü ü ü ü é é ô é ò è é ü ü ü ü ü

More information

美育211期_瀏覽用

美育211期_瀏覽用 To Nurture a Sense of Beauty: Perceiving Beauty by Reading Books Wei LIN + * &, 211! "# $ % # & '( )&( +# (* " -"./ 0 @A C 1 2 8 + 9:;:?= B >?D# E 9> 1 3 3 4 4 5 5 6 6 7 W N M ih d j ^ 5 5 5 5 5 5 4

More information

ì

ì ì ó à á à í é é è ú à ú ù è í ù è á ú é ù í é à ú á à í ó ò è ì ì é à à á ò à ú è ó á à í ù ú ì ì í ì á è ù ù ò ó á ì ì à è á á ì à ó è ì á ì ì à é ì ó é à ú í ì í á à á

More information

ò ó ì á è ó

ò ó ì á è ó ò ó ì á è ó à à è ì è á ó ì à ì à à à á ì ó à ì ì è ó à ú ì í í á ù ò ò í ì ó à ò ú ó ì à à à à à à í á ì ù ù è ù è ò è ù é à

More information

í í à ù à à í è è ú ì á á í à ú á è á ú à é à ù ú ì ì ì ò í è ì ì í ì ì ì è ì ì à é ó ò ó ú é ì ù ì í ó è ì à è á à ì à à à í í é á à ù ì ò ì é ú í í à à à à

More information

1989 67 1993 125 305 1989 251 1964 8 1990 231 1983 608 1987 207 1990 6 ú é ì à í à ó 1990 51 é í í ù è ì ò ú à ù ó ú è í à ì è è è í á ó ì á á ò ì á ò

More information

ttian

ttian í á é ì ì ì ó á ú è ù ó è á á é ì ú á á ò á è è ó é è ì á à á

More information

ó ú à ù á í í ì ì ù á ù í í ò ó ú ù à ì ì è á í í ì è á ù è ì à ú ì ù ì í à ì ì ó ì ì è ì è á ó à ó ò é ú? à á á ú á í é ì é ì á à á ù á à ò á ò é ù? ì

More information

030 í á ì ú è ì à é ù ò í í ú ù ù á í í ì ù ó ù ì è à é é ú í ì ù ì è ò á à ì ì ì ì ì á ú ì é í í é ò í ì é è ú ú í é ú è à è è à è ó à ò ù à à ù ó ì ì ì à à ù à á ú á ì á ù ù è

More information

ú á à à á á è ù? ì í ì á ì ò é? é à ì? à ó é à ì à à ì é í ì è? à ì á ú ó á á ì ù ì è ù

More information

é ú í í à á í à ù à é ó à è á ù á à à ì á á à é í á ò è ì í ì ù à é ì ì à à è ù é à ù à é ú ì ú ù 1 1 3 4

More information

ú ì à ì ù ù é à à à í ú ì ì à í à é ì ó à è à ù ì é á ù ú ò ù ù ò

More information

è

è è à à à í á à à ì ú ú á ú ú ì ì í ù í à ú è ò ò ì ù ì à ì à í ì ì è è è é à ì é é á è í í à ì è ì ú í ù ì ò è à í ì à á è ì ó ú è é é ì é ì ì ì ú ó ì à ú á

More information

ò í ú ó ì à ò è 5500 500 2 5500 x 23 50 2 5 2 5 9 5 10 9 5 9 9 4 4 10 64 9 9 74 10 1 5 2 1 9 5 5 4 9 7 1 5 1 3 2 1 3 1 5 1 3 1 5 1 1 5 1 3 1 1 1 4 1 4 2 40 40 1

More information

ò à í é ì è ì é á à è à è è ì á á à à à

More information

ò ú ó ó ú ó ú ó ú ú ó G L E = G W à è í ü í ü ü á á á á á á á á

More information

á á á ú é ó é é á í í á ú á é á á í í é

More information

à á à è à è à ú à á á á à á è à à ù ú ù í á è è í á è è è è è ù ò í è è ì à à è á è úí à à ì á í é è á à ì à é à è è í ú º ú

More information

é

é à á í ù é ù ó á è í ú ù è ì í á ì ú á é ó ú ò ì ò ì à ù à ì è ì ì à è ì ó è ú á è í ì é ì éá ì é ì ù è è í í ù á à à è è à ú á ó ú è í ú á ú è ì ù ú é ì é à ú ù ì ì ó í è ì ì

More information

ì à à ó é í í à ì í ó à í á ò ó ì í ì í í ù ó à í ì à ù à ú è à à à ú ó ò í ù è á á é è ò ì ì ì è é ù ì à ì á ù à á ò í à ì é á è á ì ò ó è ì ò ú ì ó é ú í ú è ù í í à ó ú ú

More information

è á à ì ì ì ò à ó ù ú à ò è ù è è ò í á è ù è à ù à è á ú á í à à à é à à à é à èi ú á à à ó á ì à à á è à à á ó à á ù à à á ì ó à í à é ò ú ì à ò ì à ù ì é à í í á á è ò á á á á

More information

è ì è é è ò ì ù ù ó é ú ù è ó ì ù à è ùè á ù ù ò ó ò ù à é ù ò ì í à à à à ò à á è à è ù é é ì ú ì à à ì é ù é í ì ò

More information

ó ú ú ì á ò à á ì ù í ü à ò á ò á à á

More information

ó ì ì ò = 4( +5 / 3 ) 3 12.478 = 2.32 23.2 (47) 1 365 4 1 4 1 19 365 1 365 4 = 29 499 4 235 940 V M = 1 3300 182 M M á

More information

ó ì ì ò = 4( +5 / 3 ) 3 12.478 = 2.32 23.2 (47) 1 365 4 1 4 1 19 365 1 365 4 = 29 499 4 235 940 V M = 1 3300 182 M M á

More information

è à è è à à ó á ò ó ù ì à à ì ù à à è ù à ó á ù è à ò ì ò òú ù è à à ì ò ì ù í ù ì è í ú ò ì ù á ì è ì á à à ò ì ì ì ó é á é ú à ú ù ì à ó ì è á ì ù ì à à á í á á à ì è ì è á í á à à á è é ù í í è

More information

3 5 5 3 1 9 1 0 1 0 1 0 1 0 1 2 1 2 1 2 2 π 202 2 3.14 100 2 628 a 12 15 x a 20 = 9 2 2 3 2 4 2 5 2 1 2 2 ìí ì í à á à á á à è é è ò è à ó ò ì ù à í

More information

85 1957 3 4 143 131 142 37 4 480 490 490 22 140 25 2 35 35 492 197 4 59 488 488 1996 1 19 124 332 138 18 128 6 2 134 28 123 159 20 120 35 486 264 486 42 1992 5 1959 5 1983 139 165 6 298 221 83 11 1956

More information

á ì é ò í í í à ò è á è ú á ú á ú é é á ò ì ò ì ú ì ù á à ì ì ì ò í ì à ò á ù ì à á á é ò ó ì í á ù à è ú ì à ú ò ú ó ó é à ó ú ì ì ì à ì ì è í í ú è ú í é è ù

More information

1988 11 20 1 ( ) ( ) ( ) ( ) 2 ( ) (, ) 3 ( ) ( ) ( ) ( ) ò ò ó í è

More information

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 é 48 è 49 50 51 à 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68

More information

é è à è è ê é è ü

More information