2010-09-07 11 views
6

Potrzebuję utworzyć obraz z przezroczystym tłem w .NETCF, używam magenty jako tła, które chcę uczynić przezroczystym. Sposób, w jaki próbowałem to zrobić, to zastąpić onPaint(). Ale nie mogę uzyskać przejrzystości tła? Oto, co mam:Przejrzystość w zwartej strukturze

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); 
} 

Ale kiedy próbuję dołączyć ImageAttributes, mój obraz nie jest w ogóle rysowany?

Odpowiedz

9

Ah, przezroczystość w CF. Godziny i dni można (i nie) marnować na tym. Po pierwsze, możesz dać nam trochę więcej informacji o obrazach, których używasz (bitmapy, png, itp.), Ale prawdopodobnie możemy wydedukować trochę z tego postu. Musimy również wiedzieć, czy znajduje się on w kontenerze podrzędnym (jak w ramce, panelu itp.).

Przejrzystość Colorkey jest z pewnością obsługiwana (była od 2.0 - może nawet wcześniejsza). Problem polega na tym, że rodzic zostanie "wykrwawiony", jeśli jesteś dzieckiem. Wygląda na to, że próbujesz, ale nie jest to dla mnie całkowicie oczywiste, więc mam kilka pytań uzupełniających, które można by wyjaśnić.

  • Czy nadpisanie OnPaint a Form lub niestandardowe sterowanie?
  • Po co wywołujesz bazę OnPaint() po pracy (w przeciwieństwie do wcześniejszej lub wcale)?
  • Czy zastąpiłeś OnPaintBackground?

Domyślam się, że masz jakiś błąd w sposobie, w jaki dzwonisz do wszystkiego, ale nie mamy wystarczająco dużo kodu, żeby to zauważyć.

Oto kilka więcej zasobów na obrazie i przejrzystość:

istnieje więcej zasobów dla alfa-kanałowy rzeczy (który jest daleki od prostoty w CF), ale s Wygląda na to, że próbujesz colorkey, te powinny wystarczyć.

+0

w prostych przypadkach, dlaczego nie wystarczy użyć tego.pnlMyPanel.BackColor = this.BackColor? – hellboy

3

Kompaktowy framework nie obsługuje przezroczystości - można uzyskać wsparcie przez interfejs COM. Chris Lorton ma very good blog post na alpablending na kompaktowej ramie.

1

Wygląda na to, że OpenNETCF zarządził również owijkami w tym obszarze. Jestem pewna, że ​​Chris Tacke mógłby skomentować więcej na ten temat. Wydaje się być bardzo aktywny na tej stronie, ale wygląda na to, że go pokonał:

Powiązane problemy