T
TM_
Neues Mitglied
- 1
Hallo,
Ich hatte mal eine Frage zu grafischen Effekten von SVGs gestellt. Nun habe ich herausgefunden, dass für SVGs keine solche Effekte unterstütztwerden, doch es soll laut diesem code möglich sein, eine svg in eine Bitmap zu laden und mit den Bitmap-Methoden solche Effekte zu machen:
Jedoch verstehe ich die Logik dahinter nicht und habe trotz zahlreicher Versuche nichts funktionsfähiges bekommen.
Denn ich verstehe nicht, wo jetzt meine Bitmap ist. Es handelt sich wohl um die "newBM", aber laut meinem Kentnissen erstellt diese Zeile:
doch lediglich eine Bitmap mit den Maßen der svg, ohne jeglichen grafischen Inhalt, oder liege ich da falsch?
Was ich ebenfalls nicht verstehe ist der Canvas:
Nach dem was ich gelernt habe, habe ich immer nur einen Canvas benutzt und auf diesem alles malen lassen. Hier bekommt de rCanvas beim initialisieren aber schon eine Grafik. Am Ende wird dann schließlich doch einfach die svg-render methode Verwendet, wodurch ich dann doch keine Bitmap habe und meine Effekte (z.B. Alpha runterschrauben für Durchsichtigkeit) dann immer noch nicht möglich sind.
Oder wird durch die Render Methode jetzt der Grafische Inhalt in die Bitmap übertragen? Aber ich dachte der Canvas malt immer auf den Bildschirm, das zerstört schon wieder meine ursprüngliche Vorstellung eines Canvas
Irgendwie kann ich dem code überhaupt nicht folgen und weiß daher nicht wie ich die BM richtig verwenden soll. Ich köntne zwar jetzt alle SVG in Inkscape laden und als Bitmap exportieren, aber das wäre auch sehr aufwendig :/
Bin für jede Hilfe also sehr dankbar!
Ich hatte mal eine Frage zu grafischen Effekten von SVGs gestellt. Nun habe ich herausgefunden, dass für SVGs keine solche Effekte unterstütztwerden, doch es soll laut diesem code möglich sein, eine svg in eine Bitmap zu laden und mit den Bitmap-Methoden solche Effekte zu machen:
Code:
// Read an SVG from the assets folder
SVG svg = SVG.getFromAsset(getContext().getAssets(), filename);
// Create a canvas to draw onto
if (svg.getDocumentWidth() != -1) {
Bitmap newBM = Bitmap.createBitmap(Math.ceil(svg.getDocumentWidth()),
Math.ceil(svg.getDocumentHeight()),
Bitmap.Config.ARGB_8888);
Canvas bmcanvas = new Canvas(newBM);
// Clear background to white
bmcanvas.drawRGB(255, 255, 255);
// Render our document onto our canvas
svg.renderToCanvas(bmcanvas);
}
Denn ich verstehe nicht, wo jetzt meine Bitmap ist. Es handelt sich wohl um die "newBM", aber laut meinem Kentnissen erstellt diese Zeile:
Code:
Bitmap newBM = Bitmap.createBitmap(Math.ceil(svg.getDocumentWidth()),
Math.ceil(svg.getDocumentHeight()),
Bitmap.Config.ARGB_8888);
Was ich ebenfalls nicht verstehe ist der Canvas:
Code:
Canvas bmcanvas = new Canvas(newBM);
Oder wird durch die Render Methode jetzt der Grafische Inhalt in die Bitmap übertragen? Aber ich dachte der Canvas malt immer auf den Bildschirm, das zerstört schon wieder meine ursprüngliche Vorstellung eines Canvas
Irgendwie kann ich dem code überhaupt nicht folgen und weiß daher nicht wie ich die BM richtig verwenden soll. Ich köntne zwar jetzt alle SVG in Inkscape laden und als Bitmap exportieren, aber das wäre auch sehr aufwendig :/
Bin für jede Hilfe also sehr dankbar!