Java AWT Graphics更改drawString()的背景颜色[重复]

Posted

技术标签:

【中文标题】Java AWT Graphics更改drawString()的背景颜色[重复]【英文标题】:Java AWT Graphics change drawString()'s background color [duplicate] 【发布时间】:2018-05-03 01:16:10 【问题描述】:

在绘制带有透明部分的字符时,您可以看到背景颜色的透光。如何将字体透明部分更改为白色?

例如使用这段代码,我得到一个chess pawn with gray background:

package org.some.package;

import javax.swing.*;
import java.awt.*;

public class Example extends JPanel 

    @Override
    protected void paintComponent(Graphics g) 
        super.paintComponent(g);

        g.setColor(Color.GRAY);
        g.fillRect(0 ,0, getWidth(), getHeight());
       
        //Font containing chess figures
        g.setFont(new Font("DejaVu Sans", Font.PLAIN, 100));

        g.setColor(Color.BLACK);
        g.drawString("\u2659", 10, 100);
    

    public static void main(String args[]) 
        JFrame frame = new JFrame("Example");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(200, 200);
        frame.add(new Example());
        frame.setVisible(true);
    

我该怎么做才能像this一样得到它?

【问题讨论】:

我认为不存在简单的解决方案。透明部分不仅包含在封闭循环中,还包括字体外部。 @HovercraftFullOfEels “我认为不存在简单的解决方案” 虽然是这样,但“不太简单”的解决方案是欺骗的答案。 :) @AndrewThompson:确实!! 【参考方案1】:

由于各种原因,我认为普通的字符串绘图是不可能的。最简单的解决方案是使用图像而不是字符串;不过如果你真的想使用字符串,你也可以改变文本颜色本身来识别一个 teamColor(你喜欢哪个)。

【讨论】:

【参考方案2】:

只需将你想要的图片制作成图片,然后绘制到10, 100即可。

【讨论】:

@HovercraftFullOfEels 怎么样?好的 误解了您的意图。对不起。

以上是关于Java AWT Graphics更改drawString()的背景颜色[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Java AWT 图形界面编程Canvas 组件中使用 Graphics 绘图 ② ( AWT 绘图步骤 | Graphics 绘图常用 API )

如何在 java.awt.graphics 中停止闪烁?

Java awt包中Graphics类中drawChars怎么用

java为图片添加水印

java图形处理-Java Graphics2D

Java AWT 图形界面编程Canvas 组件中使用 Graphics 绘图 ④ ( AWT 绘图窗口闪烁问题 )