Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [C#]: Trasparenza di una picturebox

    Salve regà, questa è bella.

    Sto facendo un'applicazione, che oltre ad altre funzionalità, ha anche quella di applicare il watermark.
    La modalità con cui applicherà il watermark è la seguente:

    Il programma serve a quadratizzare delle immagini, non stretchandole ma riempendo le parti bianche del lato minore con un colore a scelta o una texture.
    Se voglio posso applicare il watermerk, caricando un'immagine.

    Praticamente mi appare una seconda picturebox con il watermark impresso, e la posso spostare e ridimensionare (non vi dico le bestemmie per fare ste funzioni) dove e come mi pare sopra l'immagine che quadratizzerò.

    Ora quà casca l'asino, se anche io applico l'opacizzazione dell'immagine watermark a mio piacimento, tale immagine diventa più o meno trasparente... ma sulla picturebox watermark

    Praticamente cosa avviene:

    Carico l'immagine X, che viene messa al centro in bella vista per l'anteprima, 100X100 pixel di default.
    Carico l'immagine watermark, che di default è 50X50, viene collocata nell'angolo superiore destro (e non tiriamo in ballo la politica adesso), non opacizzata (alpha=255).

    Se ad un certo punto imposto, tramite una barretta di scorrimento, l'alpha a 128, di nota chiaramente che l'immagine watermark viene effettivamente opacizzata, ma non si vede l'immagine sotto

    Dopo vari tentativi sono venuto a capo della situazione ed ho capito che la causa è il colore della picturebox, che se anche viene impostato a trasparente (forzato anche da codice: pictureBox1.BackColor = Color.FromArgb(0, 0, 0, 0) se la picturebox sta sopra all'altra picturebox (e senze immagine alcuna) lascia comunque una quadrato grigio che copre l'immagine sotto!

    Ora, la causa l'ho trovata, ma non riesco a trovare la soluzione, esiste un modo per ritoccare l'opacità della stessa picturebox? E non solo quello dell'immagine?

    Tnx

  2. #2
    Ho risolto...

    Allora, praticamente andava tutto bene, tranne un piccolo particolare del funzionamento dei controlli.

    Quando dico al controllo X "il tuo colore di fondo è trasparente" lui prende come riferimento il suo Parent.

    Infatti la mia form era così composta:

    All'interno della form c'era un panel (classico sfondo grigio);

    All'interno del panel coesistevano la picturebox1 (quella che uso per il watermark) e la picMain (l'immagine centrale).

    Quando io dicevo a picturebox1 che il suo Color era Transparent, lui prendeva come colore o sfondo di riferimento (quello che praticamente passava attraverso la picturebox) il fondo del panel, nonostante picturebox1 fosse in primo piano rispetto a picMain...

    La soluzione è stata, semplicemente settare questo comando nel costruttore:

    picturebox1.Parent=picMain;

    E reimpostare tutti i calcoli di posizionamento e ridimensionamento in base ai nuovi riferimenti.

    Et les jeux son fait


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.