Как вставить текст под углом? - PullRequest
0 голосов
/ 06 декабря 2011

Как вставить текст в ежевику под углом 90 градусов. Мне нужно окружить изображение текстом (см. Рисунок):

Как это сделать?

Спасибо!

Ответы [ 2 ]

5 голосов
/ 06 декабря 2011

Попробуйте это:

public void paint(Graphics g) {

    //Render horizontal text and image;

    //Render vertical text;        
    g.drawImage(getRotatedText(text), x, y, Graphics.LEFT | Graphics.TOP);
}

public Image getRotatedText(String text) {

    int width = //horizontal text width considering the current font
    int height = //horizontal text font height

    final Image img = Image.createImage(width, height);
    Graphics gx = img.getGraphics();
    gx.drawString(text, 0, 0, Graphics.LEFT | Graphics.TOP);
    gx = null;

    int[] rowData = new int[width];
    int[] rotatedData = new int[width * height];

    int rotatedIndex = 90;
    for (int i = 0; i < height; i++) {
        img.getRGB(rowData, 0, width, 0, i, width, 1);

        for (int j = 0; j < width; j++) {
            rotatedIndex = angle == 90 ? (height - i - 1) + j * height
                    : (angle == 270 ? i + height * (width - j - 1)
                    : width * height - (i * width + j) - 1);
            rotatedData[rotatedIndex] = rowData[j];
        }
    }

    if (angle == 90 || angle == 270) {
        return Image.createRGBImage(rotatedData, height, width, true);
    } else {
        return Image.createRGBImage(rotatedData, width, height, true);
    }
}
0 голосов
/ 06 декабря 2011

Если вы можете использовать OS6 +, тогда Graphics.drawTextOnPath (...) - это то, что вам нужно.

...