Bitmaps dynamisch erstellen
-
Hi,
Kann mir jemand von euch sagen wie ich dynamisch bitmaps nach vorher festgelegten Werten erstellen kann?
die Werte wären z.B. Höhe, Breite, Hintergundfarbe, zentrierter Text, Textfarbe, neuer Dateiname
-
Geuse schrieb:
Kann mir jemand von euch sagen wie ich dynamisch bitmaps nach vorher festgelegten Werten erstellen kann?
Meinst du so?
import java.awt.Color; import java.awt.FontMetrics; import java.awt.Graphics2D; import java.awt.geom.Rectangle2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class TestBitmap { public static void main (String[] args) { BufferedImage image = createNewImage(300,300,Color.RED); drawTextOnImage(image,"Hallo, Hallo, Hallo, Hallo, Hallo!",Color.YELLOW); saveImageAsBMP(image,"Test.bmp"); } public static BufferedImage createNewImage(int width, int height, Color background) { BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); Graphics2D graphics = image.createGraphics(); graphics.setColor(background); graphics.fillRect(0,0,width,height); return image; } public static void drawTextOnImage (BufferedImage image, String text, Color textColor) { Graphics2D graphics = image.createGraphics(); graphics.setColor(textColor); Rectangle2D rect = graphics.getFontMetrics().getStringBounds(text,graphics); int height = (int)Math.round(rect.getHeight()); int width = (int)Math.round(rect.getWidth()); graphics.drawString(text, (image.getWidth() - width) >> 1, (image.getHeight() - height) >> 1); } public static void saveImageAsBMP(BufferedImage image, String filename) { try { File file = new File(filename); ImageIO.write(image,"bmp",file); } catch (IOException e) { } } }
Jetzt musst du nur noch Parameter für den Programmaufruf einbauen.
-
cool, danke, sowas hab ich gesucht
-
jemand ne Idee wie ich sowas in C++ realisiert bekomm?
Komme mit CBitmap, BITMAP, Graphics etc. grad mal gar nicht zurecht.
-
MSDN->CBitmap anschauen
Bild erstellen mit CBitmap::CreateBitmap
Da gibst du Höhe,Breite und Farbtiefe an.