【发布时间】:2012-06-25 05:00:25
【问题描述】:
我有一个与我的帧大小相同的缓冲图像:
public BufferedImage img;
public static int WIDTH = 800;
public static int HEIGHT = 600;
img=new BufferedImage(WIDTH, HEIGHT,BufferedImage.TYPE_INT_RGB);
如何绘制它,以便我可以看到只有黑色图像填充框架?不使用画布
我只想使用图形中的 drawImage 函数,而不使用 paint 或 paintComponent 函数
如果可能,我如何将一维数组 [WIDTH*HEIGHT] 分配给该图像?
简单地说:我想创建一个图像,将数组中的值转换为像素(0=black,999999999=lightblue 等)并将其绘制到屏幕上。
编辑:
这是没有按预期工作的代码(它应该是一个带有黑色绘制图像的框架)但只是一个空白框架。为什么图像没有添加到框架中?
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();
}
}}
【问题讨论】:
-
如果您想要黑色背景,请添加一个面板(带有黑色背景)并将其设置为内容窗格。如果要在框架中添加图像,请将图像添加到
ImageIcon,使用图标制作JLabel,然后将标签添加到框架。顺便说一句,通常最好描述最终效果或用户特征,而不是告诉我们您“想要”或“不想要”什么。目标就是功能,您只需专注于实现该目标的(可能有缺陷的)策略。 -
我想要帧上的缓冲图像(使用代码创建的图像,未加载)。我想要它黑色,因为我将使用数组修改像素,然后将数组的值添加到图像中。例如,我将使用自己的算法绘制一个矩形(我不喜欢使用 drawrect 函数)
-
所有这些以“我想要”开头的东西并没有告诉我任何我可以用来帮助你的东西。目标是什么?您提供的功能是什么?例如。 “提供多语言支持”是一项功能 “更白、更亮、更泡沫”是一项功能..
-
这是一个从头开始制作的图形引擎(使用我自己的算法来绘制东西)。我正在尝试将数组转换为图像,然后在屏幕上绘制该图像。(希望我是清除)
-
好的。那更清楚了。为了尽快获得更好的帮助,请发布您的最佳尝试SSCCE。
标签: java arrays image draw bufferedimage