Java 简单的像素网格,在那里我可以用鼠标画大像素(选择分辨率)?
我正在寻找一种在Java中制作一个简单网格的方法,如果你拖动鼠标,它将填充像素。所以只是一个简单的绘图表面 现在重要的是,我可以选择分辨率,或者换句话说,选择像素大小 我需要在网格中绘制的图形作为神经网络的输入模式。所以我想稍后在2Darray中检索信息 例如:一个20*20的网格,其中每个“像素”(或更合适的正方形)实际上是一个10*10实像素的正方形 如何制作一个简单的像素网格,在那里我可以用鼠标画大像素(选择分辨率)Java 简单的像素网格,在那里我可以用鼠标画大像素(选择分辨率)?,java,matrix,grid,awt,draw,Java,Matrix,Grid,Awt,Draw,我正在寻找一种在Java中制作一个简单网格的方法,如果你拖动鼠标,它将填充像素。所以只是一个简单的绘图表面 现在重要的是,我可以选择分辨率,或者换句话说,选择像素大小 我需要在网格中绘制的图形作为神经网络的输入模式。所以我想稍后在2Darray中检索信息 例如:一个20*20的网格,其中每个“像素”(或更合适的正方形)实际上是一个10*10实像素的正方形 如何制作一个简单的像素网格,在那里我可以用鼠标画大像素(选择分辨率) 创建一个布尔值的二维数组(用于存储选定区域或像素),所有数组元素的默认值
布尔值的二维数组(用于存储选定区域或像素),所有数组元素的默认值为false
- 扩展的
,或JPanel
JLabel中显示的
buffereImage
true
repaint()
,或者更新图像并重新绘制标签true
数组元素对应区域的颜色谢谢你的帮助!我想可能有人已经创建了一个我想要的网格类,但是我没有等待,而是接受了你的建议,开始按照你的思路编写代码 如果您只想执行并查看代码。我仍然有一个小问题,拖拉鼠的行动,它总是填补了广场上的权利,我想要的。为什么会这样?也请告诉我,如果我做了一些奇怪的或不必要的代码。再次感谢你
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class GridBox extends JPanel implements MouseMotionListener {
private static final long serialVersionUID = 1L;
//The Array with the Rectangles
private static List<List<DrawnRectangle>> pixels = new ArrayList<List<DrawnRectangle>>();
//The Frame (JComponent)
private static JFrame f = null;
public GridBox()
{
this.addMouseMotionListener(this);
}
public static void main(String[] args)
{
f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setPreferredSize(new Dimension(400, 400));
f.add(new GridBox());
f.pack();
f.setVisible(true);
}
@Override
protected void paintComponent(Graphics g)
{
drawGrid((Graphics2D)g, 20, 20, 400, 400);
}
public static void drawGrid(Graphics g, int rowAmount, int columnAmount, int width, int height)
{
int pixelSizeW = width / columnAmount;
int pixelSizeH = height / rowAmount;
DrawnRectangle.defaultThickness = 1;
for(int row = 0; row < rowAmount; row++)
{
List<DrawnRectangle> currentRow = new ArrayList<DrawnRectangle>();
for(int column = 0; column < columnAmount; column++)
{
DrawnRectangle current = new DrawnRectangle( f, (row*pixelSizeW), (column*pixelSizeH), pixelSizeW, pixelSizeH);
currentRow.add(current);
current.paint();
}
pixels.add(currentRow);
}
}
public void clearGrid()
{
for( List<DrawnRectangle> ListRect : pixels)
{
for( DrawnRectangle rect : ListRect)
{
rect.clearInterior();
}
}
}
@Override
public void mouseDragged(MouseEvent e)
{
Point p = e.getPoint();
for( List<DrawnRectangle> ListRect : pixels)
{
for( DrawnRectangle rect : ListRect)
{
if( rect.contains(p))
{
rect.fill(Color.black);
}
}
}
}
@Override
public void mouseMoved(MouseEvent arg0)
{
}
}
import java.awt.*;
导入java.awt.event.*;
导入java.util.*;
导入javax.swing.*;
公共类GridBox扩展JPanel实现MouseMotionListener{
私有静态最终长serialVersionUID=1L;
//具有矩形的数组
私有静态列表像素=新的ArrayList();
//框架(JComponent)
私有静态JFrame f=null;
公共网格框()
{
this.addMouseMotionListener(this);
}
公共静态void main(字符串[]args)
{
f=新的JFrame();
f、 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f、 setPreferredSize(新尺寸(400400));
f、 添加(新网格框());
f、 包装();
f、 setVisible(真);
}
@凌驾
受保护组件(图形g)
{
绘图网格((图形2D)g、20、20、400、400);
}
公共静态void drawGrid(图形g、int rowAmount、int columnAmount、int width、int height)
{
int pixelSizeW=宽度/列数量;
int pixelSizeH=高度/行数;
DrawnRectangle.defaultThickness=1;
对于(int row=0;row
哦,是的,您必须将DrawnRectangle添加到包中,您可以在这里找到它: