Newsgroup: it.comp.lang.visual-basic
Titolo: [VB] Picturebox immagine wmf e funzione mirror

e' possibile, e se si' come, dopo avere caricato un immagine wmf o bmp, 
ecc. nel controllo picturebox, effettuare l'operazione di mirror 
orizzontale, ovvero farla ruotare attorno al suo asse verticale?
esempio: a.b.c --> c.b.a
grazie  e ciao
marco


in particolare sto usando il metodo paintpicture
PictureBox1.PaintPicture PictureBox1, PictureBox1.Width, 
PictureBox1.Height, -PictureBox1.Width, -PictureBox1.Height
ma cosi me la ruota sia orizzontalmente sia verticalmente!
sull'help e' scritto di usare i valori negativi solo per width , solo 
per height o per entrambi, il fatto e' che ottengo un siultato solo se 
li uso entrambi!
suggerimenti?

 li uso entrambi!
scusa, non ho capito se hai provato a mettere un parametro positivo e l'altro
negativo. Secondo la guida dovrebbe essere questo il modo per ottenere il
mirror, però in effetti non ho mai provato.
--
Salutoni
Sergio


Infatti se metto entrambi i parametri negativi ottengo
aaa -> ccc
abc -> cba
ccc -> aaa
se invece ne cambio uno solo, indifferentemente height o width, non 
ottengo nulla !!!

 PictureBox1.Height, -PictureBox1.Width, -PictureBox1.Height
ho risolto, pero secondo me la guida non e' chiara in merito al mirror!
Ecco la versione corretta:
PictureBox1.PaintPicture PictureBox1, PictureBox1.Width, 0, 
-PictureBox1.Width, PictureBox1.Height
PictureBox1.Height deve diventare 0
ciao

 -PictureBox1.Width, PictureBox1.Height
concordo, stavo appunto verificando.
di fatto, con i parametri in seconda e terza posizione, devi dire in che punto
parti a disegnare l'immagine. Se valgono 0,0 cominci dall'angolo superiore
sinistro, e quindi se scrivi "in negativo" vai fuori dalla picture box. stesso
discorso se li imposti a larghezza e altezza del controllo e non inverti
entrambe i parametri successivi.
--
Salutoni
Sergio


ora ho un problema totalmente diverso ma che ha che fare con picturebox!!!
e cioe' la mia wmf e' trasparente per cui quando faccio il mirror si 
sovrappone a quella sotto e viene un pastrocchio.
potrei sostituire il colore trasparente della wmf con il bianco, ma 
dovrei farlo per un centinaio di wmf !!!!
oppure potrei usare un picturebox2 copiare su esso l'immagine ribaltata
fare un picturebox1.cls e poi ricopiare il tutto sulla prima --> swap
ma non mi piace tanto.
l'ultimo parametro della paintpicture non mi funziona, forse perche' e' 
una wmf o forse perche' non lo so usare! e comunque forse non mi risolve 
il problema!
quindi se non ci sono altri suggerimenti pensavo di copiare l'immagine 
in memoria anziche in una picturebox1 e poi fare lo swap. ma non so 
proprio come fare, cioe' quale struttura dati si usa in questi casi?
ciao
marco

 usa in questi casi?
Autoredraw della picturebox a False e quando hai
finito forzi il Refresh.
In questo modo scrivi in memoria e solo quando fai
refresh la copi e la visualizzi nella picturebox.
hth,
Lokar
--
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
UGIdotNET - 
http://www.ugidotnet.org

 refresh la copi e la visualizzi nella picturebox.
grazie.
ho provato ma  se metto il refresh subito dopo paintpicture, non 
funziona, e non mi fa proprio il mirror.
io lascio l'autoredraw sempre a false, ma forse bisogna metterlo a true 
prima del refresh???

 prima del refresh???
Scusami, ho riletto *meglio* il tuo post :).
Prova cosi':
Dim ipd As IPictureDisp
Set ipd = Picture1.Image
Picture1.Cls
Picture1.PaintPicture ipd, _
                      Picture1.Width, _
                      0, _
                      -Picture1.Width, _
                      Picture1.Height


 hth,
sempra un'ottima idea, pero il tipo IPictureDisp in vb non esiste.
come lo hai implementato?
grazie ancora comunque
ciao
marco


ho trovato basta un riferimento a OLE automation!
funziona tutto perfettamente.
grazie mille
ciao
marco

 funziona tutto perfettamente.
Bene ;)
Happy Coding =)
