Oppure

Loading
09/08/21 15:49
bernie
Non capisco, nel tuo esempio chiamavi 3 volte la funzione rettangolo e crearvi una grafica con 3 rettangoli, uno bianco, uno grigio e uno nero.
La differenza che vedo è che mentre nel tuo esempio salvavi il bmp dopo le tre chiamate alla funzione, io salvo il bmp nella funzione. Ed è logico, volevo evitare di scrivere il salvataggio 4 volte. Al limite potrei creare una funzione per salvare.
Era solo per rendere il programma più leggibile. Ho sbagliato?
Grazie
aaa
09/08/21 20:55
Carlo
Si.
in programmazione tutto è permesso
09/08/21 21:20
Carlo
Postato originariamente da bernie:

Hai ragione, larghezzamm 1000, altezzamm 2000, framemm65,gapmm5, mmpixel 14,17
Perché dici che non cambio nome? Ogni case ha un valore diverso di nome che passo alla sub.


E' ambiguo mmpixel 14,17 significa mmpixel = 14.17 ?
non so quanto vale nteste
in programmazione tutto è permesso
09/08/21 21:52
Carlo
Alla riga 81:

Dim ind As UInt32 = colonna + riga * immagine.Width

Non puoi usare immagine.Width perché è un numero assoluto non rapportato al vettore (pixel pari o dispari e/o 2 pixel a byte). Devi usare (come avevo fatto nell'esempio quando passavo larghezza) bmpData.Stride (che contiene la larghezza reale rappresentata nel vettore).

La riga 81 diventa:

Dim ind As UInt32 = colonna + riga * bmpData.Stride

Il programma sembra che funzioni, ma non ti fare ingannare, il vettore è nero all'inizio (tutti zeri), il rettangolo bianco (15) è il secondo che hai creato, ed ecco che appaiono il nero default e il bianco disegnato, il disegno del rettangolo nero è perso perché sovrascritto.

Poi vedo che vuoi il nero sul livello 15 e il bianco sul livello 0. Per ottenerlo devi invertire la palette quando la crei. (già lo avevi fatto in un esempio che mi avevi mandato)

Potresti anche considerare (quando avrai invertito la palette) che l'mmagine è tutta bianca (con tutti zeri) ed andare a scrivere solo il rettangolo nero (con tutti 15) evitando di disegnare due rettangoli, se è sufficiente... :rotfl:
Ultima modifica effettuata da Carlo 09/08/21 22:14
in programmazione tutto è permesso
10/08/21 4:00
bernie
mmpixel 14.17 mentre nteste 1 .
Per quanto riguarda le palette, devo cambiare per usare solo 3 bpp.
Per quando riguarda fare solo un rettangolo nero, in effetti dovrebbe andare bene, in quanto il rettangolo bianco è praticamente grande come il bmp. Il punto è che in pratica i rettangoli dovrebbero essere 3 , il primo bianco della dimensione della grafica, il secondo non bianco il terzo dentro il secondo ma bianco.
Il salvataggio nella funzione è solo per vedere se il risultato è quello che voglio, in quanto dopo devo tagliarle verticalmente a una data larghezza e poi solo allora salvare il tutto.
Oggi pomeriggio provo.
Grazie
aaa
10/08/21 4:44
bernie
Ti allego un esempio della grafica che vorrei creare . Come avrai capito , tutti i vanno impostati da esterno .
Per questo pensavo di creare il primo rettangolo bianco ( la grafica totale ) poi aggiungere il rettangolo nero e infine sul rettangolo nero il terzo rettangolo più piccolo.
In fin dei conti si può scomporre in 3 rettangoli inscritti uno dentro l'altro.
Grazie
aaa
10/08/21 11:52
Carlo
L'immagine che hai postato è chiara, ma le spiegazioni no o viceversa.

Per questo pensavo di creare il primo rettangolo bianco ( la grafica totale ) (ok) poi aggiungere il rettangolo nero (ok) e infine sul rettangolo nero il terzo rettangolo più piccolo (non capisco).
In fin dei conti si può scomporre in 3 rettangoli inscritti uno dentro l'altro (non capisco, i rettangoli dell'immagine non sono inscritti).

Per quando riguarda fare solo un rettangolo nero, in effetti dovrebbe andare bene, in quanto il rettangolo bianco è praticamente grande come il bmp (ok). Il punto è che in pratica i rettangoli dovrebbero essere 3 (ok), il primo bianco della dimensione della grafica (ok), il secondo non bianco (nero va bene??) il terzo dentro il secondo ma bianco (c'entra con l'esempio allegato??)[i].
Ultima modifica effettuata da Carlo 10/08/21 11:55
in programmazione tutto è permesso
10/08/21 13:51
bernie
La parte nera, è un rettangolo a cui manca una parte sulla dx, per l'appunto il terzo rettangolo bianco. I rettangoli sono inscritti in quanto uno dentro l'altro.
Il secondo rettangolo ( quello non bianco per intenderci) avrà il colore( toni di grigio) in accordo con il valore di colore( da 1 a 8 essendo una grafica a 3 bpp) . Il terzo trattandolo serve per " cancellare" una determinata parte del secondo rettangolo.
Nell'immagine postata, i tre rettangoli hanno il punto di origine diverso, ma il punto finale ( in basso a destra) uguale.
Spero di essere stato più chiaro. Scusa e grazie.
aaa