rysowanie własnego buforowanego obrazu na ramce
Mam buforowany obraz z rozmiarami mojej ramki:
public BufferedImage img;
public static int WIDTH = 800;
public static int HEIGHT = 600;
img=new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
Jak mogę to narysować, aby zobaczyć tylko czarny obraz wypełniający ramkę? bez użycia Canvas
Chcę używać tylko funkcji drawImage z grafiki bez używania funkcji paint lub paintComponent
Jeśli to możliwe, jak mogę przypisać do tego obrazu macierz 1D [SZEROKOŚĆ * WYSOKOŚĆ]?
PO PROSTU: Chcę utworzyć obraz, przekonwertować wartości z tablicy na piksele (0 = czarny, 999999999 = jasnoniebieski itp.) I narysować go na ekranie.
EDYTOWAĆ:
Jest to kod, który nie działa zgodnie z oczekiwaniami (powinien to być ramka z czarnym rysunkiem), ale jest to tylko pusta ramka. Dlaczego obraz nie jest dodawany do ramki?
import javax.swing.*;
import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferInt;
public class test extends Canvas{
public static JFrame frame;
public static int WIDTH = 800;
public static int HEIGHT = 600;
public test(){
}
public static void main(String[] a){
test t=new test();
frame = new JFrame("WINDOW");
frame.add(t);
frame.pack();
frame.setVisible(true);
frame.setSize(WIDTH, HEIGHT);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t.start();
}
public void start(){
BufferedImage img = new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
int[] pixels = ((DataBufferInt)img.getRaster().getDataBuffer()).getData();
boolean running=true;
while(running){
BufferStrategy bs=this.getBufferStrategy();
if(bs==null){
createBufferStrategy(4);
return;
}
for (int i = 0; i < WIDTH * HEIGHT; i++)
pixels[i] = 0;
Graphics g= bs.getDrawGraphics();
g.drawImage(img, 0, 0, WIDTH, HEIGHT, null);
g.dispose();
bs.show();
}
}}