Hi,
ich möchte erst mal alle Pixel in einem Bereich gruen malen.
Er malt die Pixel aber immer schwarz, egal welche Farbe ich angebe.
ColorSeperation.java
window.java
...
...
ich möchte erst mal alle Pixel in einem Bereich gruen malen.
Er malt die Pixel aber immer schwarz, egal welche Farbe ich angebe.
ColorSeperation.java
Java:
package htw;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Panel;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.Raster;
public class ColorSeperation extends Panel {
private int[][] colorArray;
private int x;
private int y;
private int seperationType;
private int width;
private int height;
// Erst wenn der Farbauszug erzeugt wurde, dann zeichne das Bild
private boolean colorSeperationIsReady;
private BufferedImage farbauszug;
private Image farbauszugImage;
/**
@brief Erstellt und BERECHNET EIN FARBAUSZUG und MALT es
@param int[][] 3fach Array (RGB) der Farben des Bildes
@param x X-Koordinate wo das Histogramm gezeichnet wird
@param y Y-Koordinate wo das Histogramm gezeichnet wird
@param seperationType || 0 == ROT, 1 == GRUEN, 2 == BLAU
@param width Breite des Farbauszuges
@param height Hoehe des Farbauszuges
*/
ColorSeperation (int[][] colorArray, int x, int y, int seperationType, int width, int height){
this.colorArray = colorArray;
this.x = x;
this.y = y;
this.seperationType = seperationType;
this.width = width;
this.height = height;
this.colorSeperationIsReady = false;
this.farbauszug = new BufferedImage(width,height,BufferedImage.TYPE_INT_RGB);
}
/**
* @brief Wandelt das RGB-int Array in ein Bild um, damit es gemalt werden kann
*/
void createColorSeperation (){
// Nummer des Pixels im RGB-Array
int pixelNumber = 0;
int actualColorPixel = 0;
// Raster raster = farbauszug.getRaster();
//
// Soll ein R- ein G- oder ein B-Farbauszug gezeichnet werden
//
// ROT
if (seperationType == 0){
// Gehe Zeile fuer Zeile durch
for (int x = 1; x < height; x++){
// Jedes Pixel einzeln setzen
for (int y = 1; y < width ; y++){
// Setze den Pixel im Farbauszug
// farbauszug.setRGB(300, 300, 3096);
//actualColorPixel = raster.getSample(y, x, 0);
// setze gruene Pixel
farbauszug.setRGB(width-1, height-1, 0xFF00FF00);
//System.out.println(colorArray[0][1]);
// Gehe weiter zum naechsten Pixel
pixelNumber++;
}
}
// fertig, jetzt kann gezeichnet werden
colorSeperationIsReady = true;
//System.err.println("Fehler: falscher seperationType ausgewaehlt! Es gibt nur 0(R), 1(G) und 2(B).");
}
// GRUEN
else if (seperationType == 1){
}
// BLAU
else if (seperationType == 2){
}
// Fehler
else{
System.err.println("Fehler: falscher seperationType ausgewaehlt! Es gibt nur 0(R), 1(G) und 2(B).");
}
}
public void update(Graphics g) { //Example2409.java
paint(g);
}
/**
* Zeichne den Farbauszug
*/
@Override
public void paint(Graphics g) {
// Das Bild zum Zeichnen liegt vor
if (colorSeperationIsReady){
farbauszugImage = Toolkit.getDefaultToolkit().createImage(farbauszug.getSource());
g.drawImage(farbauszugImage, x, y, this);
}
super.paint(g);
}
}
window.java
Java:
// Gib mir das Bild als RGB-int Array
rgbColorsForPicture = ImageToolK.readRGBvalues(pictureForColorSeperation);
// Erstelle den roten Farbauszug
ColorSeperation farbauszugRot = new ColorSeperation(rgbColorsForPicture, 0, 0, 0, actualScalation1[0], actualScalation1[1]);
farbauszugRot.createColorSeperation();
Java:
/**
* FUEGE FARBAUSZUG HINZU
*/
gbc = makegbc(1, 0, 1, 1);
gbc.fill = GridBagConstraints.BOTH;
gbc.anchor = GridBagConstraints.NORTH;
gbc.weightx = bild.getWidth(null);
gbc.weighty = bild.getHeight(null);
// Constraints dem Bild zuweisen
gbl.setConstraints(farbauszugRot, gbc);
this.add(farbauszugRot);