credo che è necessario utilizzare SetPixel (o metodo equivalente di impostare direttamente i valori dei colori) per ottenere i pixel di essere "trasparente".
È possibile utilizzare il metodo Graphics.Clear
per impostare il colore oi pixel, ma non è possibile utilizzarlo per impostarli su trasparente e un colore. Ho provato questo per impostare i pixel in una parte di un bitmap:
using (Graphics g = Graphics.FromImage(theBitmap)) {
g.Clip = new Region(new Rectangle(10, 10, 80, 80));
g.Clear(Color.FromArgb(0, Color.White));
}
I pixel nella regione finiscono come "nero trasparente": 0,0,0,0. Anche disegnare un rettangolo bianco solido prima della cancellazione non aiuta. Quando l'alfa è zero in un colore, anche gli altri componenti del colore sono zero.
Utilizzando un alfa quasi trasparente come 1 funziona bene, i pixel finiscono come "quasi bianco trasparente": 1.255.255.255.
Non è * che * non comune usare i canali di colore per i dati, Dite per una mappa del terreno in una partita in cui acqua, strade, rocce, neve sono ARGB. Quindi a volte vuoi essere in grado di creare bitmap con valori RGB zero alfa e non zero. –
BTW il colore nel mio caso è rilevante a causa dell'elaborazione successiva che "mescola" i colori delle aree trasparenti con altri colori delle aree. – mackenir