Przezroczysty pictureBox

0

Cześć
Naprawdę długo szukałem i nie znalazłem kokretnego rozwiązania mojego problemu.
Jak zrobić w VS2005/C# aby pewne piksele obrazka były przezroczyste i odkrywały to co jest bezpośrednio pod nimi, a nie forme czy pulpit?
W Delphi obrazek miał chyba taką fajną wlaściwość jak Transparent określającą że wszystkie piksele o kolorze takim jak ten w lewym górnym rogu będą niewidoczne, szkoda że nowoczesny C# tego nie ma.
Da się to jakoś łatwo zrobić?
Dodam jeszcze że chcę mieć kilka obrazków poruszających sie po formie (odbijające sie kulki) więc musi to działać w miarę szybko (reczne rysowanie piksel po pikselku szybkie nie jest :/ )
Pomocy

0

Jeżeli użyjesz PictureBox nigdy nie otrzymasz przezroczystości kontrolki. Sposób przerysowywania kontrolek wyklucza tą możliwość.
Musisz narysować swoje obiekty bezpośrednio na formie, np. tak:

protected override void OnPaint(PaintEventArgs e)
        {   
            Bitmap x = new Bitmap(Resources."obrazek którego "przezroczystym" tłem będzie kolor pierwszego piksela");
            x.MakeTransparent(x.GetPixel(0, 0));
            e.Graphics.DrawImage(x, new Point(100, 100));

            e.Graphics.DrawImage(Resources."normalny 24-bitowy png z przezroczystością, również niepełną", new Point(mposx - 50, mposy - 50));

            this.Invalidate();
        }

Lecz pamiętaj, że GDI nie służy w najmniejszym stopniu do tworzenia animacji, bo nie wykorzystuje akceleracji. Chcesz animacje, pobaw się w DirectX albo OpenGL.

0

Dzięki, zaraz wypróbuje.
O DirectX i OpenPL jeszcze nie myślałem (czyt. nie mam o nich pojęcia) i nie są mi na razie potrzebne.
Dopiero zaczynam poznawać C#.
A tak przy okazji, możecie mi polecić jakiś dobry kurs podstaw DX, tak od zera?

1 użytkowników online, w tym zalogowanych: 0, gości: 1