Alfa míchání v C#

Počítačová grafika, zejména ve hrách, vyžaduje velkou pozornost k detailům. Každý pixel se počítá a neměly by existovat žádné rušivé vizuální efekty. Zde vstupuje do hry alfa blending. Téměř všechny grafické motory dnes používají nějakou formu alfa prolnutí, aby vytvořily realističtější vizuály. Pro hladké přechody mezi oběma objekty jsou příslušné barvy obou objektů kombinovány a částečně překryty. V tomto článku se naučíme, jak implementovat alfa blending v C#.

Tento článek bude obsahovat následující témata:

  1. Co je Alpha Blending
  2. C# Alpha Blending API
  3. Jak implementovat Alpha Blending
  4. Kompozitní režimy v Alpha Blending

Co je Alpha Blending?

Alfa prolnutí je technika pro kombinování dvou různých barev nebo úrovní průhlednosti pomocí krytí každé barvy k vytvoření třetí. Umožňuje postupné přechody a prolnutí barev ve vašich obrázcích. Alfa prolnutí se často používá pro efekty pozadí a průhlednosti.

V počítačové grafice je prolnutí alfa proces kombinování dvou obrázků tak, aby vypadaly jako jeden. Výsledkem je jeden obrázek, kde se některé oblasti zdají průhledné. Algoritmus funguje tak, že vypočítá míru průhlednosti mezi dvěma pixelovými barvami. Sloučí dva obrázky, aniž by se dotkl jakýchkoli pixelů.

C# Alpha Blending API – ke stažení zdarma

Pro implementaci alfa blendingu v C# budeme používat API Aspose.Drawing for .NET. Jedná se o multiplatformní 2D grafickou knihovnu pro programové kreslení textu, geometrií a obrázků. Umožňuje načítání, ukládání a manipulaci s podporované formáty souborů.

Prosím buď stáhněte si DLL API, nebo jej nainstalujte pomocí NuGet.

PM> Install-Package Aspose.Drawing

Implementujte Alpha Blending pomocí C#

Nejběžnějším způsobem implementace prolnutí Alpha v C# je použití metody Color.FromArgb(). Alfa blending můžeme implementovat programově podle následujících kroků:

  1. Nejprve vytvořte instanci třídy Bitmap.
  2. Dále vytvořte objekt třídy Graphics pomocí metody Color.FromArgb() s parametrem alpha channel.
  3. Poté definujte objekt třídy SolidBrush se zadanou barvou a velikostí.
  4. Poté zavolejte metodu FillEllipse() a nakreslete vyplněnou elipsu.
  5. Opakováním výše uvedených kroků přidáte více vyplněných překrývajících se elips s různými barvami a vytvoříte nové barvy.
  6. Nakonec výstupní obrázek uložte pomocí metody Save().

Následující ukázka kódu ukazuje, jak implementovat prolnutí alfa v C#.

// Tento příklad kódu ukazuje, jak implementovat prolnutí alfa v C#.
// Vytvořte bitmapu
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Inicializovat grafiku
Graphics graphics = Graphics.FromImage(bitmap);

// Definujte barevný štětec
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));

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

// Uložte bitmapu
bitmap.Save(@"C:\Files\AlphaBlending.png");
Implementujte Alpha Blending pomocí C#

Implementujte Alpha Blending pomocí C#

Kompozitní režimy v Alpha Blending pomocí C#

Složené režimy můžeme také použít k ovládání prolnutí alfa podle následujících kroků:

  1. Nejprve vytvořte instanci třídy Bitmap.
  2. Dále vytvořte objekt třídy Graphics pomocí metody Color.FromArgb() s parametrem alpha channel.
  3. Poté definujte objekt třídy SolidBrush se zadanou barvou a velikostí.
  4. Dále zadejte CompositingMode a CompositingQuality pro objekt Graphics.
  5. Poté zavolejte metodu FillEllipse() a nakreslete vyplněnou elipsu.
  6. Opakováním výše uvedených kroků přidáte více vyplněných překrývajících se elips s různými barvami a vytvoříte nové barvy.
  7. Nakonec výstupní obrázek uložte pomocí metody Save().

Následující ukázka kódu ukazuje, jak používat režim compsite k ovládání prolnutí alfa v C#.

// Tento příklad kódu ukazuje, jak implementovat prolnutí alfa v C#.
// Vytvořte bitmapu
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Inicializovat grafiku
Graphics graphics = Graphics.FromImage(bitmap);

// Definujte barevný štětec
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));

// Nastavte režim skládání pro překrývající se elipsy,
// barvy elips nejsou prolnuté.
graphics.CompositingMode = CompositingMode.SourceCopy;

// barvy elips se vzájemně mísí.
//graphics.CompositingMode = CompositingMode.SourceOver;

// Nastavte kvalitu skládání grafického objektu.
graphics.CompositingQuality = CompositingQuality.GammaCorrected;

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

// Uložte bitmapu
bitmap.Save(@"C:\Files\AlphaBlending_SourceOver.png");
SourceCopy Compsite Mode v Alpha Blending pomocí C#

SourceCopy Compsite Mode v Alpha Blending pomocí C#

Můžeme také použít režim Compsite SourceOver pomocí následujícího kódu v kroku #4.

graphics.CompositingMode = CompositingMode.SourceOver;
SourceOver Compsite Mode v Alpha Blending pomocí C#

SourceOver Compsite Mode v Alpha Blending pomocí C#

Získejte bezplatnou dočasnou licenci

Můžete získat bezplatnou dočasnou licenci a vyzkoušet Aspose.Drawing for .NET bez omezení hodnocení.

Závěr

V tomto článku jsme se naučili, jak implementovat techniku alpha blending programově v C#. Kromě toho se můžete dozvědět více o Aspose.Drawing pro .NET pomocí dokumentace a prozkoumat různé funkce podporované rozhraním API. V případě jakýchkoliv nejasností nás prosím neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také