Autore Topic: zoom di un immagine  (Letto 1014 volte)

Offline melchisedec

  • Gamberetto
  • *
  • Post: 29
    • Mostra profilo
zoom di un immagine
« il: 30 Giugno 2008, 19:34:18 »
ciao a tutti......ho creato un grafico, disegnato su una drawing area, che rappresenta l'andamento della temperatura in funzione del tempo..dato il grafico per intero come posso selezionare la parte che mi interessa,per esempio l'andamento di solo un ora, e ingrandirlo su tutta l'area disponibile?
esiste ga qualche funzione in gambas che fa cose smili?
Grazie già da ora:))))

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: zoom di un immagine
« Risposta #1 il: 30 Giugno 2008, 22:31:16 »
mi sa che ti conviene ridisegnare sulla drawing area la parte che ti interessa aumentando la risoluzione dell' asse x del tuo grafico.

in alternativa invece di disegnare il grafico direttamente sulla drawingarea puoi disegnarlo in una picture che poi poni sulla drawing area , così lo zoom lo puoi fare molto facilmente sulla picture che poi ridisegni sulla drawing area.

sicuramente il primo metodo è migliore in quanto non pregiudica la qualità dell' immagine visualizzata(io in un mio programma ho preferito utilizzare questo metodo)

ciao ciao

Offline melchisedec

  • Gamberetto
  • *
  • Post: 29
    • Mostra profilo
Re: zoom di un immagine
« Risposta #2 il: 01 Luglio 2008, 21:58:50 »
ok grazie...la prima soluzione è quella che anche io avevo pensato..ora scndiamo nel difficile:)
una volta generato il grafico vorrei selezionare 2 punti silla drawingarea che costituiscono gli estremi del frammento da zoomare...come posso fare?cioe come posso passare il vlore di X corrispondente alla mia sezlezione?

grazie di nuovo

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: zoom di un immagine
« Risposta #3 il: 01 Luglio 2008, 22:40:21 »
dipende da come hai realizzato il grafico.

poniamo che i dati che compongono il grafico siano salvati in un db

durante la visualizzazione "generale " dovrai per forza condensare questi valori
per quanto riguarda l' asse x (il tempo) per cui poniamo che ogni pixel del grafico equivalga a 10 minuti

selezionando uno spazio temporale avrai un valore di inizio ad esempio 100 e un valore di fine ad esempio 150

di conseguenza dovrai andare a prelevare nel db i dati relativi dal 1000 esimo minuto al 1500 esimo, con cui ridisegnerai il grafico che avrà quindi una "risoluzione" diversa dal primo.

per prelevare il valore di x iniziale puoi usare

   PUBLIC SUB DrawingArea1_MouseDown()

        valore_iniziale=mouse.x
   END


e

PUBLIC SUB DrawingArea1_MouseUp()

    valore_finale=mouse.x
END

 per il valore finale.

spero di essere stato chiaro.

ciao ciao :-D

Offline melchisedec

  • Gamberetto
  • *
  • Post: 29
    • Mostra profilo
Re: zoom di un immagine
« Risposta #4 il: 03 Luglio 2008, 22:02:21 »
grazie per il suggerimento era più o meno quello che avevo in mente...ho provato a fare come dici tu ed in effeti in debug i numerini che mi servono delle coordinate x riesco a portarli a casa, ma purtroppo appena clicco sulla drawing area si cancella...come posso evitare che accada, o comunque bloccare quelle linee sulla drawing area?

scusate per le domande idiote:)

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: zoom di un immagine
« Risposta #5 il: 03 Luglio 2008, 22:26:31 »
devi semplicemente abilitare la cache della drawingarea , questo lo fai direttamente dalle proprieta della drawing nella sezione cached=true

in tal modo l' unica possibilità di cancellare il contenuto della drawingarea è con .clear

ciao ciao