Java 如何使用awt或其他绘图机制仅部分绘制字符?

Java 如何使用awt或其他绘图机制仅部分绘制字符?,java,drawing,awt,Java,Drawing,Awt,如何仅部分绘制一个字符或一系列字符(例如,仅绘制上半部分) java.awt.Graphics类的方法drawString()只允许您完整地绘制字符,但我只想显示下半部分,例如。设置图形对象 下面的代码生成此屏幕截图: public static void main(String[] args) { JFrame frame = new JFrame("Test"); frame.add(new JComponent() { @Override

如何仅部分绘制一个字符或一系列字符(例如,仅绘制上半部分)

java.awt.Graphics
类的方法
drawString()
只允许您完整地绘制字符,但我只想显示下半部分,例如。

设置图形对象


下面的代码生成此屏幕截图:

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);

}


对于更复杂的“部分可见”版本,比<代码>剪辑< /代码>可以提供,考虑使用不透明/透明<代码> GradientPaint < /代码>或<代码> MulitpleGradientPaint < /代码>。