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
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?