java - 使用 Java Graphics 在白色上绘制黄色

标签 java swing graphics

我的应用程序使用灰度“热图”执行数据可视化。在它上面我需要用黄色绘制时间轴。它在黑色背景上看起来不错,但在白色背景上变得不可见(参见附图)。如何使其无论背景如何都可见?

这是我绘制时间戳的方法:

g.setColor(Color.yellow);
g.drawString("12:43:15", x, y);

其中g是java.awt.Graphics对象

enter image description here

最佳答案

对你的颜色进行异或怎么样?例如,

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.*;

@SuppressWarnings("serial")
public class XorEg extends JPanel {
   private static final int PREF_W = 800;
   private static final int PREF_H = PREF_W / 4;
   private static final float SIZE = 24f;
   private String text = "Hello world, how's it going? ";

   public XorEg() {
      setFont(getFont().deriveFont(SIZE));
      for (int i = 0; i < 2; i++) {
         text += text;
      }
   }

   @Override
   protected void paintComponent(Graphics g) {
      super.paintComponent(g);
      g.setColor(Color.black);
      int x = 0;
      int y = 0;
      int width = getWidth() / 2;
      int height = getHeight();
      g.fillRect(x, y, width, height);

      g.setColor(Color.white);
      x = width;
      g.fillRect(x, y, width, height);

      g.setXORMode(Color.blue);

      g.drawString(text, 10, PREF_H / 2);
   }

   @Override
   public Dimension getPreferredSize() {
      return new Dimension(PREF_W, PREF_H);
   }

   private static void createAndShowGui() {
      XorEg mainPanel = new XorEg();

      JFrame frame = new JFrame("XorEg");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

显示:

xor color

关于java - 使用 Java Graphics 在白色上绘制黄色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20777361/

相关文章:

java - Stars.java 数组索引越界

java - 使用客户端 IP 的 session 状态

java - 如何将另一个类的组合框的选定索引设置为 0

c++ - 将 QWidgets 放置在指定的坐标?

java - 如何将小立方体装入给定体积并在网页上以图形方式表示?

java - 有什么方法可以使从 ArrayList 发出的 Iterator<E> 阻止 remove() 而不创建两个迭代器?

java - 向图书馆添加额外资源

java - Swing JTable 按日期排序

java - 如何在 Java 中使用 KeyListener 移动多边形对象

asp.net - ASP.NET 中的数据可视化/分析/仪表板(非 Google 分析集成)