/****************************************************************************
* 根据文字的长宽绘制一个相应大小的框
* @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);
}
2006-06-20 11:19:05
Views(1245)
Comments