[英]Coloring Individual Pixels
我正在尝试用Java编写一个程序,该程序通过将每个RGB通道的值加一直到达到255,然后在下一个RGB通道上加一个,从而用RGB为单个像素着色来生成图像。
这里是一个例子:
红色设置为0绿色设置为0蓝色设置为0
RED在第一个像素上加一个(RED ++),直到达到255。
在RED达到255后,RED设置为0,GREEN加1(GREEN ++)。
像步骤1一样,再次添加RED通道,直到255,然后再次进行步骤2。
如果GREEN为255,则将相同的方法用于BLUE,这意味着将一个添加到BLUE,而GREEN和RED将再次设置为0。 然后再次执行步骤1。
在第一个像素中的所有通道均为255之后,第二个像素在其RED通道中上升一个。 然后,它应该再次从第1步开始,直到第二个像素在RED上的值为255,将RED设置回0的值和绿色在第二个像素上变为1的依此类推,依此类推。
我为我的英语不好和对Java知识的了解感到抱歉。
到目前为止,这是我的全部代码(注释中的内容在该项目中不再重要,无法使用,或者我不知道如何使用xD):
import javax.swing.JFrame;
//import javax.swing.JLabel;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
//import java.awt.image.BufferedImage;
public class Quadrat
{
public static void main (String[] args)
{ int x = 100;
int y = 0;
int z = 0;
int Max = 255;
int height = 500;
int width = 500;
if (x < Max){
x ++;
} else {
x = 0;
y ++;
}
if (y > Max){
y = 0;
z ++;
}
if (z > Max){
z = 0;
}
JFrame Bild = new JFrame("Bildergenerator");
Bild.setSize(width,height);
Bild.setVisible(true);
Color Kartoffel = new Color(x, y, z, 255);
BufferedImage Test = new BufferedImage(300, 200,
BufferedImage.TYPE_INT_ARGB);
Graphics graphics = Test.getGraphics();
graphics.setColor(Kartoffel);
graphics.fillRect(100, 100, 100, 100);
graphics.dispose();
Test.setRGB(1, 1, Kartoffel.getRGB());
}
/*System.out.println(x);
System.out.println(y);
System.out.println(z);*/
//img.setRGB(x,y,z);
/* JFrame Test = new JFrame("Jframe1");
JLabel Label = new JLabel("");
Test.add(Label);
Test.setSize(xx,yy);
Test.setVisible(true);
Test.setLocation(x/2-(xx/2), y/2-(yy/2));*/
/* JFrame Hyaeaeae = new JFrame("BurrScurrSWAG");
Hyaeaeae.setSize(1000,1000);
Hyaeaeae.setVisible(true);
Hyaeaeae.getContentPane().setBackground( Color.RED);*/
}
我希望您能以任何方式帮助我,如果可以的话,我非常感谢! 感谢您的关注! 祝你今天愉快! C:
您需要为此创建一个计时器,因为您的代码只是在启动后的第一次迭代中更改,而这一切都没有改变,因此需要一个计时器来确保对变量继续应用增量
package javatestapp;
import java.awt.Color;
import java.util.Timer;
import java.util.TimerTask;
import javax.swing.JFrame;
public class JavaTestApp extends TimerTask
{
static int x = 100;
static int y = 0;
static int z = 0;
static int Max = 255;
static int height = 500;
static int width = 500;
static JFrame frame;
public static void main(String[] args)
{
InitFrame();
}
public static void incrementValues()
{
if (x < Max)
{
x ++;
}
else
{
x = 0;
y ++;
}
if (y > Max)
{
y = 0;
z ++;
}
if (z > Max)
{
x = 0;
y = 0;
z = 0;
}
}
public static void genImage()
{
Color color = new Color(x,y,z,255);
frame.getContentPane().setBackground(color);
}
public static void InitFrame()
{
frame = new JFrame("Bildergenerator");
frame.setSize(width,height);
frame.setVisible(true);
Timer timer = new Timer(true);
TimerTask timerTask = new JavaTestApp();
timer.scheduleAtFixedRate(timerTask, 0, 10);
}
@Override
public void run()
{
incrementValues();
genImage();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.