Как нарисовать символы только частично, используя AWT или другой механизм рисования? - PullRequest
2 голосов
/ 08 марта 2012

Как можно нарисовать символ или последовательность символов только частично (например, только верхнюю половину)?

Метод drawString() класса java.awt.Graphics позволяет рисовать только символы целиком, но я хочу показать только нижнюю половину, например.

1 Ответ

2 голосов
/ 08 марта 2012

Установить графические объекты clip .


Код ниже создает этот скриншот:

screenshot

public static void main(String[] args) {

    JFrame frame = new JFrame("Test");

    frame.add(new JComponent() {
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);

            String text = "Hello World!";

            g.setFont(g.getFont().deriveFont(40f));

            Rectangle2D b = g.getFontMetrics().getStringBounds(text, g);
            Rectangle2D bounds = new Rectangle2D.Double(100 + b.getX(),
                                                        100 + b.getY(),
                                                        b.getWidth(), 
                                                        b.getHeight() / 2);
            g.setClip(bounds);
            g.drawString(text, (int) bounds.getX(), 
                               (int) (bounds.getMaxY() + b.getMaxY()));
        }
    });

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 300);
    frame.setVisible(true);

}
...