drawBar

2006-06-20 11:19:05 J2ME经验 Views(1245)

/****************************************************************************
      * 根据文字的长宽绘制一个相应大小的框
      * @param str String 要绘制的文字
      * @param img Image 图片,其中图片的排列顺序是 第一列:从上到下:左上,右上,左下,右下边,
      * 上,下边,第二列:左边,第三列,右边
      * @param x,y int 整体方框的x,y坐标
      * @param dx,dy int 文字偏移量
      * @param w1,h1 int 左上,右上,左下,右下,四个框的长宽
      * @param w2 int 上下边的宽,高与斜角框的高度一样
      * @param h2 int 左右边的高,宽与斜角框的宽度一样
      */
     private void drawBar(String str, Image img, int x, int y, int dx, int dy,
                                    int w1, int h1, int w2, int h2) {
           int width = g.getFont().stringWidth(str) + 2 * dx;
           int height = g.getFont().getHeight() + 2 * dy;

           //上下边框
           int num = width / w2;
           int num1 = width % w2;
           int x1 = x + w1;
           int x2 = x + w1;
           int y1 = y;
           int y2 = y + h1 + height;
           for (int i = 0; i < num; i++) {
                 drawImagedg(img, x1 + i * w2,
                                   y1, 0, 4 * h1, w2, h1, 0, 0);
                 drawImagedg(img, x2 + i * w2,
                                   y2, 0, 5 * h1, w2, h1, 0, 0);
           }
           drawImagedg(img, x1 + num * w2,
                             y1, 0, 4 * h1, num1, h1, 0, 0);
           drawImagedg(img, x1 + num * w2,
                             y2, 0, 5 * h1, num1, h1, 0, 0);

           //左右边框
           num = height / h2;
           num1 = height % h2;
           x1 = x;
           x2 = x + width + w1;
           y1 = y + h1;
           y2 = y + h1;
           for (int i = 0; i < num; i++) {
                 drawImagedg(img, x1,
                                   y1 + i * h2, w1, 0, w1, h2, 0, 0);
                 drawImagedg(img, x2,
                                   y2 + i * h2, w1 * 2, 0, w1, h2, 0, 0);
           }
           drawImagedg(img, x1,
                             y1 + num * h2, w1, 0, w1, num1, 0, 0);
           drawImagedg(img, x2,
                             y2 + num * h2, w1 * 2, 0, w1, num1, 0, 0);

           //上下左右
           x1 = x;
           x2 = x + width + w1;
           y1 = y;
           y2 = y + height + h1;
           drawImagedg(img, x1,
                             y1, 0, 0, w1, h1, 0, 0);
           drawImagedg(img, x2,
                             y1, 0, h1, w1, h1, 0, 0);
           drawImagedg(img, x1,
                             y2, 0, h1 * 2, w1, h1, 0, 0);
           drawImagedg(img, x2,
                             y2, 0, h1 * 3, w1, h1, 0, 0);

           g.setColor(255, 255, 255);
           g.fillRect(x + w1, y + h1, width, height);

           g.setClip(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
           g.setColor(0);
           g.drawString(str, x + w1 + dx, y + h1 + dy, 0);

     }

Comments

Leave a Comment

Name
Content
Verification Type the characters you see in the picture below