Newsgroup: it.comp.lang.visual-basic
Titolo: Ombre

Sono indeciso su come procedere con una funzione.
Qualcuno sa se è possibile inserire una label od un altro oggetto grafico su
di un picturebox, rimuovere la label e fare in modo che quanto vi era
scritto rimanga sul picturebox (ovviamente solo come immagine e non come
oggetto con i suoi eventi)?

 ha scritto nel messaggio
news:PAAo8.85075$1S3.2...@twister1.libero.it...

Secondo me è impossibile.
Comunque potresti inserire tutti i controll che vuoi su una picturebox (o
altro oggetto contentitore), fare uno Stamp del video (bottone stamp della
tastiera), andare in Paint, incollare l'immagine, ritagliare l'area che ti
serve, salvare l'immagine su file e caricarla nella picture box...
Saluti,
Pusky


A parte gli scherzi (non che la mia soluzione non funzioni), se spieghi
meglio quali sono le tue necessità potrai ricevere un aiuto migliore.
Saluti,
Pusky


Si può fare, posizioni il controllo, catturi (con le
api di capture window) il rettangolo in una picture nascosta, togli il
controllo e con paintPicture metti l'immagine al suo posto.
ma aldilà
della fattibilità, a cosa ti serve ?!? se è per l'ombreggiatura puoi usare
i controlli shape oppure due labels con offset minimo.
Fabio
--------------------------------
Inviato via 
http://usenet.iol.it
 

STEFANO BOSCOLO chiede

Una Label non è altro che una Print sull'hDc del container.
Basta fare la print a mano e poi puoi pure eliminare la label.
Però non ho capito se lo devi fare a design-time o a run-time.
Ho provato a piazzare una label su una picturebox settata con
AutoRedraw=True.
Su un pulsante ho messo questo codice:
Private Sub Command1_Click()
    If Len(Dir$("C:\sfondo.bmp")) > 0 Then
        Picture1.Picture = LoadPicture("C:\sfondo.bmp")
    End If
    Set Picture1.Font = Label1.Font
    Picture1.ForeColor = Label1.ForeColor
    Picture1.CurrentX = Label1.Left
    Picture1.CurrentY = Label1.Top
    Picture1.Print Label1.Caption
    SavePicture Picture1.Image, "C:\sfondo.bmp"
End Sub
ad ogni riavvio ho spostato la label e ho cambiato caption e font. Sembra
tutto OK: le label che ho "stampato" di volta in volta ci sono tutte.
Ciao, Silv:o)

Grazie Silvio, funziona!
Ho trovato inutile l'idea del file, basta scrivere:


io perņ continuo ad essere curioso dell'uso che ne fai...
insisto che per creare l'effetto ombreggiato bastano 2 labels con offset
(non č che questo porti via 100MB di ram)
giusto per capire se stai cercando di complicarti la vita
Quello che non capisco č: se non vuoi che le labels ti catturino gli eventi
che vuoi totalmente dedicati alla picturebox, perché non usi un semplice
Picture1.Print ?
fabio

> io perň continuo ad essere curioso dell'uso che ne fai...

Non hai capito la battuta, ombre riferito al fatto che l'oggetto lasciasse
una traccia della sua immagine. Se proprio sei curioso ti accontento. Ho
sviluppato una funzione che visualizza grandi diagrammi sovrapponendo ad una
picturebox labels, immagini ecc. Il problema č che spesso supero la misura
massima consentita ad una picturebox. Ho allora pensato ad una soluzione
"virtuale". La picturebox ha le misure della finestra che la contiene e le
scrollbars provocano il caricamento dei soli componenti che appartengono
alla parte visibile pilotata e, quindi, non spostano la picturebox ma
provocano il ricaricamento dei componenti appartenenti all'area
corrispondente (fiatone). Questo ha praticamente eliminato i limiti alle
dimensioni del diagramma ma il caricamento, muovendo le scrollbars č lento
se il diagramma č molto grande. Stavo studiando soluzioni per velocizzare il
tutto.

Perfetto. Scusa per la mia insistenza, volevo solo capire.
in effetti Ombre non l'avevo preso per battuta, ma come esigenza di voler
disegnare la label ombraggiata e mi sembrava che tu stessi scegliendo la via
piů lunga..
ciao
Fabio