Mieszanie alfa w C#

Grafika komputerowa, zwłaszcza w grach, wymaga dużej dbałości o szczegóły. Liczy się każdy piksel i nie powinno być żadnych irytujących efektów wizualnych. W tym miejscu wchodzi w grę mieszanie alfa. Prawie wszystkie silniki graficzne używają obecnie jakiejś formy łączenia alfa w celu stworzenia bardziej realistycznych efektów wizualnych. Aby uzyskać płynne przejścia między obydwoma obiektami, odpowiednie kolory dwóch obiektów są łączone i częściowo na siebie nachodzą. W tym artykule dowiemy się, jak zaimplementować mieszanie alfa w języku C#.

W tym artykule zostaną omówione następujące tematy:

  1. Co to jest mieszanie alfa
  2. C# Alpha Blending API
  3. Jak wdrożyć mieszanie alfa
  4. Tryby kompozytowe w Alpha Blending

Co to jest mieszanie alfa?

Mieszanie alfa to technika łączenia dwóch różnych kolorów lub poziomów przezroczystości, wykorzystująca krycie każdego koloru do uzyskania trzeciego. Pozwala na stopniowe przejścia i miesza kolory na obrazach. Mieszanie alfa jest często używane w przypadku efektów tła i przezroczystości.

W grafice komputerowej mieszanie alfa to proces łączenia dwóch obrazów, tak aby wyglądały jak jeden. Rezultatem jest pojedynczy obraz, na którym niektóre obszary wydają się przezroczyste. Algorytm działa na zasadzie obliczania stopnia przezroczystości między kolorami dwupikselowymi. Łączy dwa obrazy bez dotykania pikseli.

C# Alpha Blending API — bezpłatne pobieranie

Do implementacji mieszania alfa w języku C# będziemy używać interfejsu API Aspose.Drawing for .NET. Jest to międzyplatformowa biblioteka grafiki 2D do programowego rysowania tekstu, geometrii i obrazów. Umożliwia ładowanie, zapisywanie i manipulowanie obsługiwanymi formatami plików.

Proszę pobrać bibliotekę DLL interfejsu API lub zainstalować ją za pomocą NuGet.

PM> Install-Package Aspose.Drawing

Zaimplementuj Alpha Blending przy użyciu C#

Najczęstszym sposobem implementacji mieszania alfa w języku C# jest użycie metody Color.FromArgb() . Możemy programowo zaimplementować mieszanie alfa, wykonując czynności podane poniżej:

  1. Najpierw utwórz instancję klasy Bitmap.
  2. Następnie utwórz obiekt klasy Graphics przy użyciu metody Color.FromArgb() z parametrem kanału alfa.
  3. Następnie zdefiniuj obiekt klasy SolidBrush o określonym kolorze i rozmiarze.
  4. Następnie wywołaj metodę FillEllipse(), aby narysować wypełnioną elipsę.
  5. Powtórz powyższe kroki, aby dodać więcej wypełnionych nakładających się elips z różnymi kolorami, aby wygenerować nowe kolory.
  6. Na koniec zapisz obraz wyjściowy przy użyciu metody Save().

Poniższy przykładowy kod pokazuje, jak zaimplementować mieszanie alfa w języku C#.

// Ten przykład kodu demonstruje, jak zaimplementować mieszanie alfa w języku C#.
// Utwórz mapę bitową
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Zainicjuj grafikę
Graphics graphics = Graphics.FromImage(bitmap);

// Zdefiniuj pędzel koloru
var solidBrush1 = new SolidBrush(Color.FromArgb(128, 255, 0, 0));
var solidBrush2 = new SolidBrush(Color.FromArgb(128, 0, 255, 0));
var solidBrush3 = new SolidBrush(Color.FromArgb(128, 0, 0, 255));

// Narysuj elipsy
graphics.FillEllipse(solidBrush1, 300, 100, 400, 400);
graphics.FillEllipse(solidBrush2, 200, 300, 400, 400);
graphics.FillEllipse(solidBrush3, 400, 300, 400, 400);

// Zapisz mapę bitową
bitmap.Save(@"C:\Files\AlphaBlending.png");
Zaimplementuj Alpha Blending przy użyciu C#

Zaimplementuj Alpha Blending przy użyciu C#

Tryby kompozytowe w Alpha Blending przy użyciu C#

Możemy również użyć trybów kompozytowych do kontrolowania mieszania alfa, wykonując czynności podane poniżej:

  1. Najpierw utwórz instancję klasy Bitmap.
  2. Następnie utwórz obiekt klasy Graphics przy użyciu metody Color.FromArgb() z parametrem kanału alfa.
  3. Następnie zdefiniuj obiekt klasy SolidBrush o określonym kolorze i rozmiarze.
  4. Następnie określ CompositingMode i CompositingQuality dla obiektu Graphics.
  5. Następnie wywołaj metodę FillEllipse(), aby narysować wypełnioną elipsę.
  6. Powtórz powyższe kroki, aby dodać więcej wypełnionych nakładających się elips z różnymi kolorami, aby wygenerować nowe kolory.
  7. Na koniec zapisz obraz wyjściowy przy użyciu metody Save().

Poniższy przykładowy kod pokazuje, jak używać trybu złożonego do kontrolowania mieszania alfa w języku C#.

// Ten przykład kodu demonstruje, jak zaimplementować mieszanie alfa w języku C#.
// Utwórz mapę bitową
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Zainicjuj grafikę
Graphics graphics = Graphics.FromImage(bitmap);

// Zdefiniuj pędzel koloru
var solidBrush1 = new SolidBrush(Color.FromArgb(128, 255, 0, 0));
var solidBrush2 = new SolidBrush(Color.FromArgb(128, 0, 255, 0));
var solidBrush3 = new SolidBrush(Color.FromArgb(128, 0, 0, 255));

// Ustaw tryb kompozycji dla nakładających się elips,
// kolory elips nie są mieszane.
graphics.CompositingMode = CompositingMode.SourceCopy;

// kolory elips mieszają się ze sobą.
//graphics.CompositingMode = CompositingMode.SourceOver;

// Ustaw jakość kompozycji obiektu Graphics.
graphics.CompositingQuality = CompositingQuality.GammaCorrected;

// Narysuj elipsy
graphics.FillEllipse(solidBrush1, 300, 100, 400, 400);
graphics.FillEllipse(solidBrush2, 200, 300, 400, 400);
graphics.FillEllipse(solidBrush3, 400, 300, 400, 400);

// Zapisz mapę bitową
bitmap.Save(@"C:\Files\AlphaBlending_SourceOver.png");
Tryb Compsite SourceCopy w Alpha Blending przy użyciu C#

Tryb Compsite SourceCopy w Alpha Blending przy użyciu C#

Możemy również skorzystać z trybu Compsite SourceOver, używając następującego kodu w kroku nr 4.

graphics.CompositingMode = CompositingMode.SourceOver;
Tryb Compsite SourceOver w Alpha Blending przy użyciu C#

Tryb Compsite SourceOver w Alpha Blending przy użyciu C#

Uzyskaj bezpłatną tymczasową licencję

Możesz uzyskać bezpłatną tymczasową licencję, aby wypróbować Aspose.Drawing for .NET bez ograniczeń ewaluacyjnych.

Wniosek

W tym artykule dowiedzieliśmy się, jak programowo zaimplementować technikę mieszania alfa w języku C#. Poza tym możesz dowiedzieć się więcej o Aspose.Drawing for .NET korzystając z dokumentacji i poznać różne funkcje obsługiwane przez API. W przypadku jakichkolwiek niejasności prosimy o kontakt na naszym bezpłatnym forum pomocy technicznej.

Zobacz też