java - 如何在 JPanel 上显示 RGB 值的二维数组?
问题描述
我是 Java 新手,我想做一个基本的 3D 引擎。
我想获取一组颜色并将其显示在屏幕上。有没有一种简单快捷的方法来做到这一点?
编辑
例如,如果数组是
{{{255, 0, 0}, {255, 0, 0}}, {{255, 0, 0}, {255, 0, 0}}}
它将输出一个 2x2 像素的红色正方形。
解决方案
这是概念证明(POC)。
如执行自定义绘画教程中所述,您可以通过编写扩展javax.swing.JPanel
并覆盖其paintComponent
方法的类来执行自定义绘画。
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ColorArr extends JPanel implements Runnable {
private int[][][] arr = {
{
{255, 0, 0},
{255, 0, 0}
},
{
{255, 0, 0},
{255, 0, 0}
}
};
public ColorArr() {
setPreferredSize(new Dimension(50, 50));
}
@Override // java.lang.Runnable
public void run() {
showGui();
}
@Override // javax.swing.JComponent
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (int row = 0; row < arr.length; row++) {
for (int col = 0; col < arr[row].length; col++) {
Color color = new Color(arr[row][col][0], arr[row][col][1], arr[row][col][2]);
g.setColor(color);
g.drawRect(row, col, 1, 1);
}
}
}
private void showGui() {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}
public static void main(String[] args) {
EventQueue.invokeLater(new ColorArr());
}
}
这是一个屏幕截图。一个两像素乘两像素的红色正方形出现在左上角。
推荐阅读
- python-3.x - 如何在 numpy 中处理这个广播/索引问题?
- botframework - Cortana 技能不是由调用短语触发的
- c# - 如何处理从 SQL Server 到 datetimepicker 的 [NULL] 日期时间值
- c - ncurses 不捕获鼠标移动,但终端是
- mysql - 当 Golang 程序在进行数据库事务时终止时,它可以回滚吗?
- php - 如何处理带有“IN”条件的 PHP API POST 选择语句?
- python - 如何从 Python 中的基类访问派生类的实例变量
- javascript - 添加 :hover 伪类
- c# - UWP 自定义控件事件订阅需要错误类型
- sql - UNION 的第五列在 SAS 中具有不同的数据类型