Cancellare ciò che ho scritto con DrawText

_prime_number
Ciao, sempre nel mio mitico progetto di sudoku ( :D ) devo stampare i numeri in una finestra grafica in una griglia. solo che il gioco prevedere che l'utente possa anche cancellare i numeri che ha inserito. Io per scrivere uso DrawText, funzione così costituita:

void DrawText(Window win,char *txt,int px,int py,int lung)
{
XDrawString(dpy,win,gc,px,py,txt,lung);
}

Mi chiedevo: c'è un modo per cancellare del testo inserito nella finestra grafica senza dover ricaricare tutto (sfondo, griglia, altri numeri...) ?

Grazie!!

Paola

Risposte
eugenio.amitrano
Lo sfondo dietro ogni testo e' formato da un solo colore oppure c'e' una varieta' di colori ?

Eugenio

eugenio.amitrano
Se c'e' un solo colore di background potresti stampare il testo su se stesso del colore dello sfondo, oppure fare una fill dell'area, stampare una bar.

Se invece c'e' un disegno in sottofondo, potresti memorizzare lo sfondo prima di stampare un testo e poi sovrapporlo quando vuoi cancellarlo.

Eugenio

eugenio.amitrano
Ora devo lasciare, domani leggero' le tue risposte.

Eugenio

_prime_number
Ciao!
Allora, come sfondo ho un'immagine purtroppo... L'unica idea "risparmio" che mi è venuta è sovrapporre solo una certa area dell'immagine, facendo un ciclo e lavorando con i pixel..
Strano però che nella X11 non ci sia una funzione di cancellazione del testo!!

Paola

eugenio.amitrano
Cancellare un testo grafico e come dire cancellare una linea oppure una circonferenza.

Se l'immagine di sfondo e' file, puoi ricavarti la mappa di pixel dell'area che ti interessa e riscriverla, oppure, puoi scrivere n file per le n caselle che contengono la mappa dei pixel delle relative aree prima della scrittura con la DrawText.

Fammi sapere se ti serve aiuto per questo.

A presto,
Eugenio

_prime_number
Ok farò così allora.. dovrei farcela, l'immagine è in PPM e ho delle funzioni per rielaborare i pixel. Grazie!! ;) Se ho problemi vengo a piangere qua :)
Ciau!

Paola

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.