Autore Topic: Scrivere testo su bitmap caricata da PNG  (Letto 1070 volte)

Offline lucrus

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S GT-I9000 + Olipad + Zenithink ZT-181
  • Sistema operativo:
    Ubuntu 11.04
Scrivere testo su bitmap caricata da PNG
« il: 30 Maggio 2011, 10:32:05 CEST »
0
Ciao a tutti,

sto cercando di scrivere del testo su una bitmap che ottengo caricando un file PNG (salvato nel progetto come drawable). Questo il mio codice fino ad ora:

Codice (Java): [Seleziona]
    Bitmap bits = BitmapFactory.decodeResource(act.getResources(), R.drawable.ricevuta_vuota).copy(Bitmap.Config.ARGB_8888, true);
    Canvas c = new Canvas(bits);
    c.setDensity(Bitmap.DENSITY_NONE);

    Paint p = new Paint();
    p.setTypeface(Typeface.SANS_SERIF);
    p.setAntiAlias(true);
    p.setFakeBoldText(true);
    p.setColor(Color.BLACK);

    c.drawText("prova", 100, 100, p);

L'immagine PNG di origine (allegata) è larga 510 pixels ed alta 480. Il problema è che, quando poi visualizzo la bitmap i una View, il testo non compare in coordinate 100,100 o almeno l'unità di misura non sono pixels, nemmeno tenendo conto del fatto che quelle sono le coordinate dell'angolo basso sx del testo. Inoltre (ed ancora peggio) cambiando dispositivo il testo cambia posizione, come se la DENSITY del display influenzasse il calcolo delle coordinate reali o l'unità di misura che viene usata.

Come faccio ad usare i pixels dell'immagine come unità di misura per le c.draw*() ?


Offline lucrus

  • Nuovo arrivato
  • *
  • Post: 13
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S GT-I9000 + Olipad + Zenithink ZT-181
  • Sistema operativo:
    Ubuntu 11.04
Re:Scrivere testo su bitmap caricata da PNG
« Risposta #1 il: 31 Maggio 2011, 16:02:17 CEST »
+2
Risolto così:
Codice (Java): [Seleziona]
    BitmapFactory.Options optz = new BitmapFactory.Options();
    optz.inDensity = 0;
    optz.inTargetDensity = 0;
    optz.inScaled = false;
    Bitmap bits = BitmapFactory.decodeResource(act.getResources(), R.drawable.ricevuta, optz).copy(Bitmap.Config.ARGB_8888, true);
    bits.setDensity(Bitmap.DENSITY_NONE);
    Canvas c = new Canvas(bits);
    c.setDensity(Bitmap.DENSITY_NONE);

Non so se sia necessario impostare a zero inDensity ed inTargetDensity quando si mette inScaled = false, cmq questo è il codice a cui sono arrivato dopo alcune prove e fa quello che voglio.

Offline Ricky`

  • Amministratore
  • Utente storico
  • *****
  • Post: 3489
  • Respect: +507
    • Github
    • Google+
    • rciovati
    • Mostra profilo
Re:Scrivere testo su bitmap caricata da PNG
« Risposta #2 il: 31 Maggio 2011, 17:03:25 CEST »
0
Grazie per aver condiviso la soluzione, potrebbe essere utile a qualcuno :)