Autore Topic: Stampa di indeterminati numero di punti senza vettore  (Letto 901 volte)

Offline cesver

  • Gamberetto
  • *
  • Post: 26
    • Mostra profilo
Stampa di indeterminati numero di punti senza vettore
« il: 10 Novembre 2016, 18:15:50 »
Buonasera,
Anche se dal titolo sembra abbia la soluzione, non è così

problema ho un indeterminato numero di punti da disegnare .

                   Soluzioni trovate in internet (da me) :            metti in un vettore tutti i punti, e disegnali!
                                                                                                        ma il mio è indeterminato,
             e metti che dopo debba aggiungere altri punti ? devo ridisegnare tutto il grafico più i nuovi punti
             e se è un grafico da un miliardo di punti devo ristampare tutto il miliardo più 1 e poi magari più 2
             e se debbo ogni tanto integrare qualche punto da un utente?
                 
                  altre soluzioni trovate parlava di memoria cache e poi ridisegnare

ma esiste qualcosa che mi risolva il problema (sperando che sia stato chiaro nell'esprimere il problema)?
Saluti Cesver

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #1 il: 10 Novembre 2016, 18:22:39 »
... punti da disegnare .

Nel titolo parli di "stampa", mentre nel corpo del messaggio parli di "disegnare".
La prima cosa che devi chiarire è se devi "disegnare" su un oggetto immagine o su DrawingArea, oppure se devi "stampare" su una stampante un disegno.
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline cesver

  • Gamberetto
  • *
  • Post: 26
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #2 il: 10 Novembre 2016, 18:39:10 »
ecco in realtà dovrei fare entrambe le cose per questo ho fatto l'errore
ma vorrei disegnarli in una drawing area (o scroll Area sperando di aver realmente capito la differenza) e poi in caso stamparli

Offline Top Fuel

  • Gran Maestro dei Gamberi
  • *****
  • Post: 959
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #3 il: 10 Novembre 2016, 23:43:12 »
Crei un array dinamico, tipo:

Dim punti as  New ClassePunto[]

magari creando una classe ad hoc con le caratteristiche che deve avere ogni punto.
Poi se devi aggiungere alla fine nuovi punti ti basta usare la funzione:

punti.Push(oggetto)

mettendo tra parentesi l'oggetto ClassePunto nuovo arrivato.
Se poi devi mettere un nuovo punto da qualche parte in mezzo agli altri puoi fare:

punti.Add(oggetto, posizione)
Dear youtube administrators, your search bar is broken. When I type the letter "J" it appears justin bieber when it should appear Jimi Hendrix. Fix this, please.

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #4 il: 10 Novembre 2016, 23:48:28 »
metti in un vettore tutti i punti, e disegnali!
 ma il mio è indeterminato,
Per il caso di indeterminatezza o comunque di inconoscibilità a priori del numero di elementi di una variabile vettoriale, ha già descritto la soluzione Top Fuel.



             e metti che dopo debba aggiungere altri punti ? devo ridisegnare tutto il grafico più i nuovi punti
             e se è un grafico da un miliardo di punti devo ristampare tutto il miliardo più 1 e poi magari più 2
Affronto questo tuo timore solo a livello puramente didattico, poiché ogni punto (pixel) occupa almeno 3 byte (RGB) se non anche 4 (RGBA); ..... e sinceramente una immagine di 3 o 4 miliardi di byte........... :-X
Ma, a parte ciò, e volendo pensare ad immagini di alcune decine di milioni di byte, i tuoi dubbi e timori nascono da una possibile lentezza nel processare tutta quella mole di punti (pixel) da mostrare in DrawngArea ?



  altre soluzioni trovate parlava di memoria cache e poi ridisegnare
Probabilmente tu ti riferisci alla proprietà di tipo booleano .Cached della Classe DrawingArea.
« Ultima modifica: 10 Novembre 2016, 23:53:38 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline cesver

  • Gamberetto
  • *
  • Post: 26
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #5 il: 11 Novembre 2016, 12:04:34 »
si quella
ma non l'ho capita era un discorso tra il fondatore di gambas ed un altro signore (turco forse),
ma non l'ho più trovata.

Offline cesver

  • Gamberetto
  • *
  • Post: 26
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #6 il: 11 Novembre 2016, 12:38:02 »
si quella
ma non l'ho capita era un discorso tra il fondatore di gambas ed un altro signore (turco forse),
ma non l'ho più trovata.
si quella
ma non l'ho capita era un discorso tra il fondatore di gambas ed un altro signore (turco forse),
ma non l'ho più trovata.
errata corridge non avevo letto tutto il testo ed anche quello di top fuel.
Quindi dovrei mettere in un vettore dinamico e poi il tutto a video,
ma io non devo usare un vettore
proprio per la mole di dati per ricavare il punto e comunque
vorrei avere un disegno incrementeale non un vettore incrementale
è questo il discorso chiave.
in sostanza similmente ad un foglio ho la mia ScrollArea. ed una volta disegno un punto poi un cerchio poi un altro punto
senza ogni volta dover ridisegnare tutti gli oggetti perchè gli esempi visti fanno questo:
disegnano un punto
refresh e poi disegnano un punto e un cerchio
refresh e poi disegnano un punto, un cerchio e un punto
così con tre ripassagi (mi si passi il termine) ho l'effetto voluto, ma non con il modo più naturale

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #7 il: 11 Novembre 2016, 17:07:54 »
Riguardo alla proprietà .Cached dell'oggetto DrawingArea, v'è da precisare che, come ha specificato il membro, jguardon, del forum spagnolo: "Si dibujas fuera del evento _Draw() del drawing area, tienes que poner cached en True."; ossia quella proprietà va usata, come posta a True, se si deve disegnare qualcosa nella DrawingArea senza usare l'evento _Draw( ) .

Facciamo due esempi semplici:
Codice: [Seleziona]
Public Sub Form_Open()

DrawingArea1.Cached = True

With Paint
   .Begin(DrawingArea1)
   .LineWidth = 2.0     ' <---- In caso di ".Cached = True" questa proprietà va sempre impostata per far mostrare i contorni di una figura geometrica non riempita con colore! '
   .Brush = Paint.Color(Color.Red)
   .Ellipse(100, 10, 100, 100)
   .Stroke
   .End
 End With
End


Public Sub Button1_Click()

With Paint
   .Begin(DrawingArea1)
   .LineWidth = 2.0     ' <---- In caso di ".Cached = True" questa proprietà va sempre impostata per far mostrare i contorni di una figura geometrica non riempita con colore! '
   .Brush = Paint.Color(Color.Yellow)
   .Ellipse(200, 10, 100, 100)
   .Stroke
   .End
 End With
 
End

e quest'altro:
Codice: [Seleziona]
Public Sub Form_Open()
 
  DrawingArea1.Cached = True
 
End


Public Sub DrawingArea1_MouseDown()

  Paint.Begin(DrawingArea1)
  Paint.Ellipse(Mouse.X - 25, Mouse.Y - 25, 50, 50)
  Paint.Brush = Paint.Color(Color.RGB(Rnd * 255, Rnd * 255, Rnd * 255))
  Paint.Fill(True)
  Paint.End

End
Come è possibile notare, sia nell'uno che nell'altro non viene utilizzata una sub-routine dell'evento _Draw( ) della DrawingArea.

Riporto anche - per maggiore completezza - quanto  ha affermato Leo72 in un suo intervento di oltre 6 anni fa: " la proprietà Cached rallenta di molto la gestione della drawing area per cui viene messa su false per motivi di velocità. Se poi qualcuno necessita che l'immagine sia "persistente", allora se la imposta su True. "
« Ultima modifica: 11 Novembre 2016, 17:12:14 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline cesver

  • Gamberetto
  • *
  • Post: 26
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #8 il: 11 Novembre 2016, 18:04:30 »
Grazie tante,
memoria cached quindi anche se rallenta tanto ma la persistenza è quello che credo serva più del resto.
Credo si possa dire RISOLTO

a meno che come possibile upgrade :
 Se la gestione della cache fosse onerosa e si potesse appoggiare su file (come fa il gestore della ram con lo swap),
tipo copio su file e libero la cache e alla stampa riprendo...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #9 il: 11 Novembre 2016, 18:12:14 »
Se la gestione della cache fosse onerosa e si potesse appoggiare su file (come fa il gestore della ram con lo swap),
tipo copio su file e libero la cache e alla stampa riprendo...
Scusa, ma io sono curioso di sapere quanti elementi grafici (punti e figure piane) prevedi di disegnare all'incirca...   
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.243
  • Tonno verde
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #10 il: 11 Novembre 2016, 18:25:07 »
In effetti a questo punto sono curioso anch'io.
Tenendo conto che tu hai un Desktop LXDE molto leggero e una Memory di 8 giga, non vedo di cosa tu debba preoccuparti.
Ricordati che siamo su Linux, mica su Windows.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.720
  • Ne mors quidem nos iunget
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #11 il: 11 Novembre 2016, 19:28:18 »

     
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline cesver

  • Gamberetto
  • *
  • Post: 26
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #12 il: 15 Novembre 2016, 10:51:42 »
Buogniorno,
forse avete ragione dovrò preoccuparmi quando sarà preoccupante,
difatti la ram è di 16 gb (questo da cui scrivo è un server "virtualizzato")
ma sono 72 db da mezzo miliardo di record ognuno da cui calcolare dei grafici e che risponderà con grafici intrecciati e
che fungerà da server, ma forse la preoccupazione è eccessiva, bastano i problemi che ci sono.
Ma l'unico appunto è che se a me interesseranno o meno ci sarà qualcuno a cui potrebbe magari di già "interessare".

Offline Gianluigi

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 4.243
  • Tonno verde
    • Mostra profilo
Re:Stampa di indeterminati numero di punti senza vettore
« Risposta #13 il: 15 Novembre 2016, 12:17:50 »
Credo che il discorso della pesantezza sia più da riferirsi al calcolo che al disegno.
Certo che la vedo dura trovare 72 colori che si distinguano uno dall'altro.
Forse converrebbe utilizzare un grafico a colonne o barre numerate con due colori alternati.
I grafici normalmente si utilizzano ogni tanto per portarli alle riunioni, ma penso che tu qui intenda realizzare qualcosa di perpetuo che si aggiorna mano a mano che variano i dati.
La sostanza non cambia io imposterei un timer e ogni tot secondi, minuti o ore ricalcolerei e ridisegnerei.
Tieni conto che puoi anche disegnare su un'immagine ma non ne vedo la necessità tenendo conto che se non erro comunque le finestre si ridisegnano in continuazione.
nuoto in attesa del bacio di una principessa che mi trasformi in un gambero azzurro