Hallo,
ich habe in Google und auch hier im Forum gesucht aber leider nichts gefunden.
Ich muss Hex werte in eine List oder Array( egal welches, wobei List besser wäre, da ich sie im nachhinein besser erweitern kann, und ich nicht so viel performance brauche wie sie Array hergeben würde) schreiben. etwa so :
List[] werte = new List[];
werte = {1F, 1B,13,15,13,1F,00};
So diese sollen jetzt in einem 8x8 bitmap dargestellst werden, unzwar so das die stellen die in „werte“ angegeben sind mit schwarz ausgefüllt wird und der rest weiß bleibt.
Ich habe verschiedenes versucht, doch leider will es nicht so richtig klappen…
Ich habe an :
-DataBufferInt
-compatibleWritableRaster rast = Raster.createCompatibleWritableRaster(DataBuffer)
-BufferedImage -> setData(rast)
Soll das direkt aus dem Array da rein-gesetzt werden? Das könnte etwas kompliziert werden. Im einfachsten Fall würde man das Bild mit den Daten aus dem Array füllen
import javax.swing.*;
import java.awt.*;
import java.awt.image.*;
import javax.imageio.*;
import java.io.*;
class CharBitmapTest extends JPanel
{
public static void main(String args[]) throws Exception
{
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(300,300);
f.getContentPane().add(new CharBitmapTest());
f.setVisible(true);
}
private BufferedImage image = null;
public CharBitmapTest() throws Exception
{
image = new BufferedImage(8,8,BufferedImage.TYPE_INT_RGB);
byte data[] =
{
(byte)0x1F, (byte)0x1B, (byte)0x13, (byte)0x15,
(byte)0x13, (byte)0x1F, (byte)0x00, (byte)0xAB
};
paintInto(data, image);
}
private static void paintInto(byte data[], BufferedImage image)
{
for (int y=0; y<8; y++)
{
byte c = data[y];
for (int x=0; x<8; x++)
{
if ((c & (1<<x)) != 0)
{
image.setRGB(x,y,Color.BLACK.getRGB());
}
else
{
image.setRGB(x,y,Color.WHITE.getRGB());
}
}
}
}
public void paintComponent(Graphics gr)
{
super.paintComponent(gr);
Graphics2D g = (Graphics2D)gr;
g.scale(10,10);
g.drawImage(image,0,0,this);
}
}
Also die Hex werte für die Buchstaben zb sollen als Bitmaps in ein Array stehen.
zb für 4D = M
nun wenn dann in dem String der ausgewertet wird ein „4D“ vorkommt soll dafür ein M ausgegeben werden, aber das M als bitmap,
d.h. ein Satz wäre eine aneinander Reihung von Bitmaps…
Also die Hex werte für die Buchstaben zb sollen als Bitmaps in ein Array stehen.
zb für 4D = M
nun wenn dann in dem String der ausgewertet wird ein „4D“ vorkommt soll dafür ein M ausgegeben werden, aber das M als bitmap,
d.h. ein Satz wäre eine aneinander Reihung von Bitmaps…
Ich komm absolut nicht weiter, Hilfe
Edit by Jango:
Ich glaub, hier ist es besser aufgehoben. @ Unregestriert: Ein ‚Bitte‘ beim Hilfeschrei könnte auch nicht schaden.
Sehe ich es recht, dass der einzige (oder wichtigste) Unterschied zur ersten Frage-Version der ist, dass die Zahlen jetzt nicht in einem byte-Array sondern in einem String stehen? (Und ist die Frage vielleicht in irgendeinem anderen Forum schon beantwortet worden?)
@ Unregestriert: Ein ‚Bitte‘ beim Hilfeschrei könnte auch nicht schaden.
Sorry, natürlich meine ich BITTE UM HILFE =)
@Marco
Diese Frage habe ich in der Tat in einem anderen Forum auf ähnliche Weise gestellt, aber dort geht es eher darum mehrere Bitmaps hintereinander auszugeben,
diese Frage hier ist eher, wie ich einen normal Buchstaben wie „M“ als Bitmap ausgeben kann =)
&
Es ist nicht so wichtig in was für einem Array die Werte stehen, String war einfach bequemer in dem Moment =)
OK, falls dann noch eine Frage ist, versuch’ nochmal sie konkret zu stellen (und vielleicht aufbauend auf dem (compilierbaren und startbaren) Beispiel, das ich oben gepostet hatte.
Wenn es jetzt nur noch darum geht, aus dem String “4D” die Zahl 77 (ASCII für ‘M’) zu machen: Mit
char c = (char)Integer.parseInt(“4D”, 16);
sollte das gehen. Die einzlenen Teilstrings erhält man z.B. mit sowas wie
String teilstrings[] = string.split(",");
oder so.