Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1561114
  • 博文数量: 3500
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 43870
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-03 20:31
文章分类

全部博文(3500)

文章存档

2008年(3500)

我的朋友

分类:

2008-05-04 19:14:28

一起学习

教 学 纲 要

设 置并 显 示 各 种 字 体 ; 产 生 和 设 置 画 笔 颜 色 ; 设 计 窗 口 输 出样 式 ; 制 作 彩 色 标 语 。

正 文

3. drawBytes 弄 清 楚 上 面 两 个 方 法 , 这 就 简 单 多 了 。 它 用 来 输 出 byte 数 组 中 的 数 值 所 对 应 的 字 符 。 标 准 格 式 如 下 所 示 :
    drawBytes ( byte data[ ], int offset, int length, int x, int y);

      可 见 , 它 和 drawChars 很 相 似 , 只 不 过 byte 数 组 中 的 元 素 代 表 的 是 字 符 的 ASCII 码 。 比 如 “ A ” 的 ASCII 码 是 65 , B 的 是 66... 其 他 参 数 的 意 义 和 drawChars 中 的一 样 , offset 指 定 输 出 的 起 始 字 符 , length 说 明 输 出 字 符串 的 长 度 , x 和 y 表 示 显 示 的 位 置 。 还 是 举 个 例 子 吧 。
    byte byte1[ ] = {65,66,67,68,70,71,72,73,74,75}
    g.drawBytes( byte1,2,7,10,40);
这 两 条 语 句 将 在 ( 10 , 40 ) 处 显 示 “ CDEFGHI ” 。

      百 闻 不 如 一 见 , 现 在 让 我 们 用 一 个程 序 来 看 个 究 竟 吧 。
程 序 15.1
      // ShowText.java
      import java.awt.Graphics;
      import java.awt.Font;
      public class ShowText extends java.applet.Applet
      {
        Font fn = new Font("TimesRoman",Font.BOLD,12); // 产 生 一 个 名 为 fn 的 字 体
        String str = "This is drawString test."; // 给 字 符 串 赋 值
        char ch[] = {'T','h','i','s',' ', 'i','s',' ','a',' ','t','e','s','t','.'}; // 给 字 符 数 组 赋 值
        byte by[] = {65,66,67,68,69,70,71,72,73,74}; // 给 byte 数 组 赋 值
        public void paint(Graphics g)
        { g.setFont(fn); // 设 置 当 前 字 体 为 fn
            g.drawString(str,10,50); // 在 ( 10 , 50 ) 处 显 示 字 符 串 str
            g.drawChars(ch,0,15,10,70); // 在 (10,70) 处 显 示 字 符 数 组 ch 的 第 0 个 到 第 15 个 字 符
          g.drawChars(ch,3,6,30,90); // 显 示 ch 的 第 3 个 到 第 6 个 字 符
          g.drawBytes(by,0,10,50,140);
          g.drawBytes(by,2,5,200,100); // 显 示 by 数 组 的 第 2 到 第 5 个 字 符
        }
      }

      程 序 15.1 的 HTML 文 件 如 下 所 示


执 行 结 果 如 图 15.2 所 示 。

      上 面 的 程 序 都 看 懂 了 吗 ? 这 里 我 们用 到 了 两 个 程 序 包 : java.awt.Graphics 和 java.awt.Font , 因 为程 序 中 用 到 的 方 法 drawString 、 drawChars 和 drawBytes 都 在 Graphics 程 序 包 里 , Font 类 是 属 于 Font 这 个 程 序 包 的 。
    Font fn = new Font ("Courier", Font.BOLD, 20 ) ; 就 是 前 面 讲 过 的 , 产 生 一 个 新 的 字 体 名 叫 fn , 它 是 20 号 的 Courier 粗 体 。
    g.setFont ( fn ) ; 当 然 就 是 把 当 前 的 字 体设 置 为 刚 才 定 义 过 的 fn , 然 后 用 g.drawString 、 g.drawChars 和 g.drawBytes 来 输 出 字 符 , 对 照 运 行 结 果 , 很 容 易 理 解 每 一条 语 句 的 意 思 。 尽 管 有 多 种 方 法 可 以 显 示 字 符 , 不 过 大部 分 情 形 下 , 使 用 drawString 就 足 够 了 。

图 15.2 在 窗 口 的 任 意 位 置 显 示 字 符

彩 色 的 字

      想 像 一 下 , 如 果 自 己 的 主 页 里 都 是白 纸 黑 字 , 是 不 是 觉 得 少 了 点 什 么 呢 ? 那 就 给 它 加 点 颜色 瞧 瞧 , 还 有 什 么 能 比 五 彩 缤 纷 的 主 页 更 能 吸 引 人 呢 ?

      要 写 出 彩 色 的 字 , 首 先 要 设 置 写 的 字和 画 的 图 的 颜 色 , 就 像 画 家 要 作 画 , 先 要 调 颜 料 一 样 。产 生 颜 色 的 方 法 和 产 生 字 体 很 相 像 , 不 过 这 次 我 们 用 的是 Color 类 , 而 不 是 Font 类 了 。 先 调 用 Color 类 的 构 造 函 数, 产 生 一 个 Color 对 象 , 再 用 Graphics 类 里 的 SetColor 把 它 设置 到 Graphics 对 象 上 。 也 就 是 调 好 颜 色 , 然 后 放 到 画 笔 上。

      要 说 明 Color 对 象 很 简 单 , 我 们 知 道任 何 一 种 颜 色 都 可 以 由 红 、 绿 、 蓝 三 原 色 合 成 。 JAVA 里制 造 新 的 颜 色 也 只 需 给 定 三 原 色 的 数 值 就 可 以 了 。 其 说明 格 式 如 下 :
    Color ( int red , int green , int blue ) ;

    红 、 绿 、 蓝 三 原 色 的 数 值 必 须 界 于 0 到 255 之 间 , 而 且 三 个 数 值 表 示 的 顺 序 必 须 是 红 、 绿 、 蓝 。

例 如 : Color r1 = new Color (255, 0, 0) ; 这 条 语 句就 产 生 了 一 个 名 为 r1 的 红 颜 色 。

      看 看 这 句 话 产 生 了 一 种 什 么 样 的 颜色 呢 ? 我 也 不 知 道 。
    Color my_color = new Color ( 10,200,10);

      此 外 , 你 还 可 调 节 颜 色 的 明 暗 , 只需 使 用 Color 类 提 供 的 函 数 brighter( ) 和 darker( ) 就 可 以 得 到比 指 定 颜 色 亮 一 些 或 者 暗 一 些 的 颜 色 。

      好 了 , 现 在 可 以 随 心 所 欲 地 定 义 各种 各 样 的 颜 色 了 。 不 过 , 如 果 你 想 要 的 颜 色 不 是 太 离 奇的 话 , 可 以 直 接 使 用 Color 类 中 已 经 定 义 好 的 各 种 颜 色 常数 , 而 不 用 自 己 费 心 去 调 色 了 。 例 如 : g.getColor( Color.pint); 这 句 话 把 当 前 画 图 和 写 字 的 颜 色 置 为 粉 色 。

      系 统 定 义 好 的 参 数 有 :
表 15.1 系 统 定 义 的 颜 色

black 黑 色 blue 蓝 色
Cyan 青 色 Gray 灰 色
Green 绿 色 LightGray 浅 灰 色
Magenta 紫 色 Orange 橙 色
Pink 粉 色 Red 红 色
White 白 色 Yellow 黄 色
下载本文示例代码


第十讲 设定字体(二)第十讲 设定字体(二)第十讲 设定字体(二)第十讲 设定字体(二)第十讲 设定字体(二)第十讲 设定字体(二)第十讲 设定字体(二)第十讲 设定字体(二)第十讲 设定字体(二)第十讲 设定字体(二)第十讲 设定字体(二)第十讲 设定字体(二)
阅读(148) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~