|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 404
|
[VB.NET] Problema label trasparente in CF2.0 e picturebox
Buongiorno,
ho settato la propietà backcolor della label con colore trasparente sia da codice che dalle proprità ma niente lo sfondo resta bianco non trasparente...la label è situata su una picturbox quindi ho pensato di utilizzare come container la picturebox perchè la label sicuramente fa parte della form quindi mi da sfondo bianco perchè la form è bianca. ho utilizzato label1.parent=picturbox1 ma mi da errore ho provato label1.parent.control.containe(picturbox1) ma non funziona dimenticavo stiamo parlando di compactframework 2.0 per windows mobile 6 qualcuno può aiutarmi?grazie in anticipo
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Beh, ma la PictureBox non è un container, perciò ovvio che da errore. Magari spiega cosa cerchi di ottenere e perchè ti serve una Label trasparente...
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 404
|
Quote:
Da quanto programmo in vb la picturebox insieme ai frame è stata sempre un container infatti ho provato a farlo in framework(non in compact) ed è come dico io cioè se metto la label con sfondo trasparente è grigio perchè il form e grigio...poi nell'evento load della form vado a inserire label1.parent=picturebox1 e la label assume lo sfondo trasparente. Spero che sono stato chiaro e che riuscirai a risolvermi il problema che sei molto ma molto più in gamba di me ;-) |
|
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Nov 2007
Messaggi: 122
|
label.backcolor = transperent
Così dovresti ottenre l'effetto che devideri |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Non avendo mai usato una PictureBox come contenitore per altri controlli ( in .Net uso sempre Panel, TabControl ecc... ), non sospettavo proprio si potesse fare controllo.Parent = PictureBox ( eh, non si finisce mai di imparare ! Ad ogni modo, dopo breve test su applicazione tipo Smart Device, se provo a farlo, mi va in errore... In ogni caso escluderei l'uso di una Label, che, soprattutto in CF2, è un controllo un po' limitato ( non ha nemmeno l'evento Click() di base, e se vuoi usarlo come un Button, poi ? ). In soldoni l'ho risolta così : 1. Uso una PictureBox di sfondo ( PictureBoxSfondo ), con un'immagine e che deve avere la proprietà SizeMode = Normal. 2. Anzichè Labels, uso delle altre PictureBox, che hanno maggiorni possibilità e posso usarle come pulsanti ( nell'esempio, una sola, la "PictureBoxButton" ). Vedremo che far assomigliare una PictureBox ad una Label è questione di poco... 3. Ovviamente la PictureBoxButton deve stare sopra ( contenuta completamente ) alla PictureBoxSfondo, e come questa, avere la proprietà SizeMode = Normal. 4. NON imposto PictureBoxButton.Parent = PictureBoxSfondo - Da evitare. 5. Gestisco tutto nell'evento Paint della PictureBoxButton : Codice:
Private Sub PictureBoxButton_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBoxButton.Paint
'Porzione Immagine sottostante :
Dim rX As Integer = PictureBoxButton.Left - PictureBoxSfondo.Left
Dim rY As Integer = PictureBoxButton.Top - PictureBoxSfondo.Top
Dim R As New Rectangle(rX, rY, PictureBoxButton.Width, PictureBoxButton.Height)
Dim bmp As New Bitmap(R.Width, R.Height)
e.Graphics.DrawImage(PictureBoxSfondo.Image, 0, 0, R, GraphicsUnit.Pixel)
'Text del pulsante :
Dim leftTesto As Single = 5
Dim topTesto As Single = 5
Dim F As New Font("Tahoma", 12, FontStyle.Bold)
Dim SB As New SolidBrush(Color.White)
e.Graphics.DrawString("Pulsante", F, SB, leftTesto, topTesto)
'Cornice pulsante :
Dim P As New Pen(Color.White, 1)
e.Graphics.DrawRectangle(P, 0, 0, PictureBoxButton.Width - 1, PictureBoxButton.Height - 1)
End Sub
Codice:
Private Sub PictureBoxButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBoxButton.Click
MsgBox("Click")
End Sub
|
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 404
|
Ciao Marco come dici tu non si finisce mai di imparare e io aggiungo anche che tu non finisci mai di stupirmi
grazie mille veramente |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Piccola correzione : quel Dim bmp As New Bitmap(R.Width, R.Height) è superfluo ( la fretta... ), perciò : Codice:
Private Sub PictureBoxButton_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBoxButton.Paint
'Porzione Immagine sottostante :
Dim rX As Integer = PictureBoxButton.Left - PictureBoxSfondo.Left
Dim rY As Integer = PictureBoxButton.Top - PictureBoxSfondo.Top
Dim R As New Rectangle(rX, rY, PictureBoxButton.Width, PictureBoxButton.Height)
e.Graphics.DrawImage(PictureBoxSfondo.Image, 0, 0, R, GraphicsUnit.Pixel)
'Text del pulsante :
Dim leftTesto As Single = 5
Dim topTesto As Single = 5
Dim F As New Font("Tahoma", 12, FontStyle.Bold)
Dim SB As New SolidBrush(Color.White)
e.Graphics.DrawString("Pulsante", F, SB, leftTesto, topTesto)
'Cornice pulsante :
Dim P As New Pen(Color.White, 1)
e.Graphics.DrawRectangle(P, 0, 0, PictureBoxButton.Width - 1, PictureBoxButton.Height - 1)
End Sub
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jan 2007
Messaggi: 404
|
ok grazie mille oggi inserisco
|
|
|
|
|
|
#9 |
|
Member
Iscritto dal: Sep 2006
Messaggi: 209
|
Button trasparente
Mi riaggancio a questa discussione per rilanciare un mio problema analogo: io avrei la necessità di avere un button trasparente o una picturebox trasparente o comunque qualsiasi cosa che mi generi un evento al click.
Il mio problema è che questi oggetti (button, picturebox o altro) sarebbero più piccoli e sparsi un po' ovunque nel form. In pratica dovrei avere una Picturebox nel form con un'immagine. Sopra a questa Picture box dovrebbero esserci dei button piccoli qua e là che non si devono vedere ma che se vengono cliccati generano un evento. Si può fare? Non c'è una semplice proprietà di trasparenza? |
|
|
|
|
|
#10 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Puoi usare la mia soluzione anche in questo caso. Basta che ti limiti al disegno della porzione di Bmp nell'evento .Paint, escludendo invece il disegno della stringa di testo e della cornice, ottenendo pulsanti perfettamente trasparenti. La proprietà di trasparenza c'è, ma spesso non funziona come molti sperano, bensì ripropone il colore o l'immagine di sfondo del container, e come abbiamo già visto, in CF2 usare una PictureBox come "container" da problemi. |
|
|
|
|
|
|
#11 | |
|
Member
Iscritto dal: Sep 2006
Messaggi: 209
|
Quote:
|
|
|
|
|
|
|
#12 | |
|
Senior Member
Iscritto dal: Dec 2004
Messaggi: 3210
|
Quote:
Inoltre il problema a cui ti riferisci spesso è dovuto ad una cattiva interpretazione in fase di lettura dei file compressi, come il Jpg. E' successo anche a me con una jpg di sfondo presa così com'era dal Web. Sicuramente se usi .bmp le porzioni non presentano distorsioni, e così anche usando .jpg prodotti da programmi seri, come ad esempio il metodo "Salva per Web" di Photoshop... |
|
|
|
|
|
|
#13 | |
|
Member
Iscritto dal: Sep 2006
Messaggi: 209
|
Quote:
Grazie, ciao! |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 15:37.




















