Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Cavolo il mio primo post!
Ciao a tutti!
Ho un piccolo, ma fastidioso problema: vorrei memorizzare la schermata di output
fatta con il graph per utilizzarla in seguito, durante il programma.
Questa mia necessità deriva dal fatto che, volendo simulare un pseudo-Windows, ho dovuto creare il mouse.
Praticamente funziona così:
1- Disegna se stesso;
[Il cursore reale si sposta]
2- Cancella se stesso;
3- Disegna se stesso sulla nuova posizione;
...
Questa era la mia idea... Il problema è che quando si cancella deve disegnare ciò che stava coprendo... (chiedo scusa se fin'ora, ma anche dopo, sarò impreciso ma sono abbastanza confuso di mio! ).
Per memorizzare una finta schermata avevo pensato di usare un pointer type, o come cavolo si chiamano , usando le procedure getimage,getmem,putimage... (tutto visto su internet ).
Avevo provato a fargli copiare l'intera schermata (480x640) ma TP si bloccava...
Allora ho provato dividendo la schermata in 12 parti (4x3) ma, praticamente, ora me ne ritorna solo 9!
Non so qual'è il problema... vi chiedo un grande HELP!
Ecco il codice (ci sono molte cose che non c'entrano, ho cercato di toglierle ma non so se le ho tolte tutte..):
Cavolo il mio primo post!
Ciao a tutti!
Ho un piccolo, ma fastidioso problema: vorrei memorizzare la schermata di output
fatta con il graph per utilizzarla in seguito, durante il programma.
Questa mia necessità deriva dal fatto che, volendo simulare un pseudo-Windows, ho dovuto creare il mouse.
Praticamente funziona così:
1- Disegna se stesso;
[Il cursore reale si sposta]
2- Cancella se stesso;
3- Disegna se stesso sulla nuova posizione;
...
Questa era la mia idea... Il problema è che quando si cancella deve disegnare ciò che stava coprendo... (chiedo scusa se fin'ora, ma anche dopo, sarò impreciso ma sono abbastanza confuso di mio! ).
Per memorizzare una finta schermata avevo pensato di usare un pointer type, o come cavolo si chiamano , usando le procedure getimage,getmem,putimage... (tutto visto su internet ).
Avevo provato a fargli copiare l'intera schermata (480x640) ma TP si bloccava...
Allora ho provato dividendo la schermata in 12 parti (4x3) ma, praticamente, ora me ne ritorna solo 9!
Non so qual'è il problema... vi chiedo un grande HELP!
[...]
Salve,
se il tuo problema e' solo la gestione del mouse, puoi risolverlo con l'utilizzo della struttura TEvent e la funzione GetMouseEvent
Codice sorgente - presumibilmente Pascal
Ev: TEvent;
[...]
Ev.What:= EvNothing;
InitEvents;
ShowMouse;
[...]
GetMouseEvent(Ev);
Case Ev.Whatof
evMouseDown:Write('MouseDown ');
evMouseUp :Write('MouseUp ');
evMouseMove:Write('MouseMove ');
evMouseAuto:Write('MouseAuto ');
end;
ShowMouse;
[...]
puo' essere usata anche per gli eventi di tastiera, purtroppo i codici degli eventi non li ricordo, ma su internet dovresti trovare qualcosa.
Se invece vuoi gestire lo spostamento di un oggetto qualsiasi, va bene usare getimage e putimage, ma ti consiglio di non usarle per l'intera schermata, si potrebbero avere problemi con la gestione di grosse quantita' di memoria.
Infine se vuoi gestire il cambio dell'intera schermata, sappi che TP puo' gestire diverse schermate ( 256 se non ricordo male ) per cui puoi disegnare in background un'altra schermata ( con la funzione setactivepage ) e mostrarla con la funzione setvisualpage;
tra l'altro l'uso delle diverse schermate e' utile anche per evitare sfarfallii nello spostamento di un'oggetto sullo schermo.
Testo quotato
Grazie in anticipo.
Prego, spero di essere stato abbastanza chiaro.
Ciao.
Luigi
Ultima modifica effettuata da gigisoft il 03/08/2009 alle 12:38
Cavolo il mio primo post!
Ciao a tutti!
Ho un piccolo, ma fastidioso problema: vorrei memorizzare la schermata di output
fatta con il graph per utilizzarla in seguito, durante il programma.
Questa mia necessità deriva dal fatto che, volendo simulare un pseudo-Windows, ho dovuto creare il mouse.
Praticamente funziona così:
1- Disegna se stesso;
[Il cursore reale si sposta]
2- Cancella se stesso;
3- Disegna se stesso sulla nuova posizione;
...
Questa era la mia idea... Il problema è che quando si cancella deve disegnare ciò che stava coprendo... (chiedo scusa se fin'ora, ma anche dopo, sarò impreciso ma sono abbastanza confuso di mio! ).
Per memorizzare una finta schermata avevo pensato di usare un pointer type, o come cavolo si chiamano , usando le procedure getimage,getmem,putimage... (tutto visto su internet ).
Avevo provato a fargli copiare l'intera schermata (480x640) ma TP si bloccava...
Allora ho provato dividendo la schermata in 12 parti (4x3) ma, praticamente, ora me ne ritorna solo 9!
Non so qual'è il problema... vi chiedo un grande HELP!
[...]
Salve,
se il tuo problema e' solo la gestione del mouse, puoi risolverlo con l'utilizzo della struttura TEvent e la funzione GetMouseEvent
Codice sorgente - presumibilmente Pascal
Ev: TEvent;
[...]
Ev.What:= EvNothing;
InitEvents;
ShowMouse;
[...]
GetMouseEvent(Ev);
Case Ev.Whatof
evMouseDown:Write('MouseDown ');
evMouseUp :Write('MouseUp ');
evMouseMove:Write('MouseMove ');
evMouseAuto:Write('MouseAuto ');
end;
ShowMouse;
[...]
puo' essere usata anche per gli eventi di tastiera, purtroppo i codici degli eventi non li ricordo, ma su internet dovresti trovare qualcosa.
Se invece vuoi gestire lo spostamento di un oggetto qualsiasi, va bene usare getimage e putimage, ma ti consiglio di non usarle per l'intera schermata, si potrebbero avere problemi con la gestione di grosse quantita' di memoria.
Infine se vuoi gestire il cambio dell'intera schermata, sappi che TP puo' gestire diverse schermate ( 256 se non ricordo male ) per cui puoi disegnare in background un'altra schermata ( con la funzione setactivepage ) e mostrarla con la funzione setvisualpage;
tra l'altro l'uso delle diverse schermate e' utile anche per evitare sfarfallii nello spostamento di un'oggetto sullo schermo.
Testo quotato
Grazie in anticipo.
Prego, spero di essere stato abbastanza chiaro.
Ciao.
Luigi
Grazie ancora Luigi.
Ora vorrei fare un'altra domanda: esiste un modo migliore per disegnare il mouse di questo?
Praticamente mette pixel per pixel... Il problema dello sfondo è risolto, almeno!
Grazie ancora per chi mi aiuterà!