Trasparenza nella struttura compatta

Ho bisogno di creare un’immagine con uno sfondo trasparente in .NETCF, io uso il magenta come sfondo che desidero rendere trasparente. Il modo in cui ho provato a farlo è quello di sovrascrivere onPaint (). Ma non riesco a ottenere lo sfondo trasparente? Ecco cosa ho:

protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; ImageAttributes imageAttributs = new ImageAttributes(); imageAttributs.SetColorKey(Color.FromArgb(255, 0, 255), Color.FromArgb(255, 0, 255)); g.DrawImage(cross, crossRect, 200, 10, cross.Width, cross.Height, GraphicsUnit.Pixel, imageAttributs); base.OnPaint(e); } 

Ma quando provo ad includere ImageAttributes la mia immagine non viene disegnata per niente?

Ah, trasparenza nel CF. Le ore ei giorni che si possono (e hanno) sprecare in questo. In primo luogo, potresti darci qualche informazione in più sulle immagini che stai utilizzando (bitmap, png, ecc.) Ma probabilmente ne dedurremo un po ‘dal tuo post. Dobbiamo anche sapere se questo si trova in un contenitore secondario (come all’interno di un frame, pannello, ecc.).

La trasparenza di Colorkey è certamente supportata (è stato dal 2.0 – forse anche prima). Il problema qui è che otterrai un genitore “sanguina attraverso” se sei in un bambino. Questo sembra essere quello che stai provando, ma non è completamente ovvio per me quindi ho alcune domande di follow-up per chiarimenti.

  • OnPaint è un override di un modulo o un controllo personalizzato?
  • Perché stai chiamando la base OnPaint () dopo il tuo lavoro (al contrario di prima o per niente)?
  • Hai scavalcato OnPaintBackground?

La mia ipotesi ora è che hai qualche bug nel modo in cui stai chiamando tutto, ma non abbiamo abbastanza codice per individuarlo.

Ecco alcune altre risorse su pittura e trasparenza:

  • Come: disegna le immagini con trasparenza
  • Pulsanti, pannelli e controlli trasparenti
  • Mantenere la trasparenza bitmap durante la copia
  • Bug bitmap.Clear

Ci sono più risorse per roba alfa-channel (che è tutt’altro che semplice nel CF), ma dal momento che sembra che tu stia tentando colorkey, queste dovrebbero essere sufficienti.

La struttura compatta non supporta la trasparenza, tuttavia è ansible ottenerne il supporto tramite l’interoperabilità COM. Chris Lorton ha un ottimo post sul blog su alpablending sul framework compatto.

Sembra che OpenNETCF abbia già gestito wrapper attorno a questo. Sono sicuro che Chris Tacke potrebbe commentare di più su questo. Sembra essere piuttosto attivo su questo sito, ma sembra che lo abbia battuto con questo 🙂