2010-12-22 11 views
1

Ich versuche, mein Spiel ein wenig einfacher auf dem Handy zu machen, also versuche ich eine Möglichkeit, eine Reihe von Bitmaps auf eine andere große drucken, so dass ich es einfach einmal tun kann und nicht jedes Mal, wenn der Bildschirm neu gezeichnet wird. Also, gibt es eine Möglichkeit, dies zu tun? Ich weiß, dass es eine Möglichkeit gibt, alles, was auf die Leinwand gedruckt wird, auf eine Bitmap zu drucken, aber ich kann nicht scheinen, dass das funktioniert. Wenn das der einzige Weg ist, kann jemand erklären, wie man das macht? Danke im Voraus.Drucken Bitmaps auf andere Bitmap android

Hier ist etwas, was ich versucht, aber es hat nicht geklappt, so gut

Bitmap background; 
Canvas canvas; 

private void methodName() { 
    background = Bitmap.createBitmap(width, height, someKindOfConfigThing); 
    canvas = new Canvas(background); 
    canvas.drawBitmap(blahblah); 
} 

Antwort

1

Was Sie tun würde, ist die Haupt zu schaffen Bitmap, hängen Sie das an eine Leinwand an, auf die Sie zeichnen können.

Bitmap bitmap = Bitmap.createBitmap(width, height, Config.RGB_565); 
Canvas c = new Canvas(bitmap); 

Sie zeichnen können (Teile von) Bitmaps auf diese Leinwand

c.drawBitmap(anotherBitmap, transformMatrix, paint); 

Um die Haupt-Bitmap zu der Ansicht anhängen verwenden Sie einen neuen Image schaffen würde, rufen setImageBitmap Ihre Haupt Bitmap vorbei und es eingestellt als aktuelle Inhaltsansicht mit setContentView.

+0

Gibt es irgendeinen Grund, warum ich einen Nullpointer bekommen würde, wenn er versucht, die Bitmap zu initialisieren, so wie du es dort oben gemacht hast? – WWaldo

+0

Wenn Sie nur die Linie kopiert haben, würde sie erwarten, dass Breite und Höhe vorhandene Variablen sind. –

+0

Ich habe diese zu meinen bestehenden geändert und Konfig importiert Edit: Ich hatte mein Level-Objekt noch nicht initialisiert ... Danke! – WWaldo

0

Wenn Sie mehrere Bitmaps in einem anderen großen kombinieren und wiederverwenden, dass Sie bereits auf dem richtigen Weg! Zeigen Sie uns, was Sie getan haben und sagen Sie uns, was das Ergebnis ist. Ich denke, wir können Ihnen helfen :)

[Update] sollte es möglich sein, diese neue Bitmap auf Disc zu speichern, oder speichern Sie es vorübergehend als Variable:

private void methodName() { 
    background = Bitmap.createBitmap(width, height, someKindOfConfigThing); 
    canvas = new Canvas(background); 
    // drawing on the canvas should change the bitmap "background" too 
    canvas.drawBitmap(blahblah); 
    FileOutputStream fos = null; 
    try { 
     fos = new FileOutputStream("/path/to/image.png"); 
     background.compress(Bitmap.CompressFormat.PNG, 100, fos); 
     fos.close(); 
    } catch (Exception e) { 
     // catching... 
    } 
} 
+0

Nun, ich machte eine Methode, die ich lief, um die Bitmap zu erstellen, sah etwa so aus Bitmap-Hintergrund; Leinwand Leinwand; private void methodName() { Hintergrund = Bitmap.createBitmap (Breite, Höhe, someKindOfConfigThing); Leinwand = neue Leinwand (Hintergrund); canvas.drawBitmap (blahblah); } – WWaldo

+0

Ich drücke Enter anstelle von Shift + Enter, ich habe meinen Kommentar bearbeitet ... aber es ist nicht lesbar, also werde ich es zum ursprünglichen Beitrag hinzufügen – WWaldo

+0

Cool, danke! Ich werde das für etwas anderes auf der ganzen Linie verwenden müssen, wenn ich meinen Leveleditor mache. – WWaldo