Альфа-змішування в C#

Комп’ютерна графіка, особливо в іграх, вимагає великої уваги до деталей. Кожен піксель має значення, і не повинно бути різких візуальних ефектів. Ось тут і вступає в гру альфа-змішування. Майже всі графічні движки сьогодні використовують певну форму альфа-змішування, щоб створити більш реалістичні візуальні ефекти. Для плавних переходів між обома об’єктами відповідні кольори двох об’єктів поєднуються та частково накладаються. У цій статті ми дізнаємося, як реалізувати альфа-змішування в C#.

У цій статті будуть розглянуті такі теми:

  1. Що таке альфа-змішування
  2. C# Alpha Blending API
  3. Як реалізувати альфа-змішування
  4. Композиційні режими в альфа-змішуванні

Що таке альфа-змішування?

Альфа-змішування — це техніка поєднання двох різних кольорів або рівнів прозорості за допомогою непрозорості кожного кольору для створення третього. Це дозволяє здійснювати поступові переходи та змішувати кольори на ваших зображеннях. Альфа-змішування часто використовується для ефектів фону та прозорості.

У комп’ютерній графіці альфа-змішування — це процес об’єднання двох зображень, щоб вони виглядали як одне ціле. Результатом є єдине зображення, де деякі області виглядають прозорими. Алгоритм працює шляхом обчислення рівня прозорості між двопіксельними кольорами. Він змішує два зображення, не торкаючись пікселів.

C# Alpha Blending API – Безкоштовне завантаження

Для реалізації альфа-змішування в C# ми будемо використовувати API Aspose.Drawing for .NET. Це кросплатформна бібліотека двовимірної графіки для програмного малювання тексту, геометрії та зображень. Він дозволяє завантажувати, зберігати та маніпулювати підтримуваними форматами файлів.

Завантажте DLL API або встановіть його за допомогою NuGet.

PM> Install-Package Aspose.Drawing

Реалізація альфа-змішування за допомогою C#

Найпоширенішим способом реалізації альфа-змішування в C# є використання методу Color.FromArgb(). Ми можемо реалізувати альфа-змішування програмним шляхом, дотримуючись наведених нижче кроків:

  1. По-перше, створіть екземпляр класу Bitmap.
  2. Далі створіть об’єкт класу Graphics за допомогою методу Color.FromArgb() із параметром альфа-каналу.
  3. Потім визначте об’єкт класу SolidBrush із зазначеним кольором і розміром.
  4. Після цього викличте метод FillEllipse(), щоб намалювати заповнений еліпс.
  5. Повторіть наведені вище кроки, щоб додати більше заповнених еліпсів, що перекриваються різними кольорами, щоб створити нові кольори.
  6. Нарешті, збережіть вихідне зображення за допомогою методу Save().

У наступному прикладі коду показано, як реалізувати альфа-змішування в C#.

// Цей приклад коду демонструє, як реалізувати альфа-змішування в C#.
// Створіть растрове зображення
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Ініціалізація графіки
Graphics graphics = Graphics.FromImage(bitmap);

// Визначте колір пензля
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));

// Намалюйте Еліпси
graphics.FillEllipse(solidBrush1, 300, 100, 400, 400);
graphics.FillEllipse(solidBrush2, 200, 300, 400, 400);
graphics.FillEllipse(solidBrush3, 400, 300, 400, 400);

// Збережіть растрове зображення
bitmap.Save(@"C:\Files\AlphaBlending.png");
Реалізація альфа-змішування за допомогою C#

Реалізація альфа-змішування за допомогою C#

Композитні режими в альфа-змішуванні за допомогою C#

Ми також можемо використовувати композитні режими для керування альфа-змішуванням, дотримуючись наведених нижче кроків:

  1. По-перше, створіть екземпляр класу Bitmap.
  2. Далі створіть об’єкт класу Graphics за допомогою методу Color.FromArgb() із параметром альфа-каналу.
  3. Потім визначте об’єкт класу SolidBrush із зазначеним кольором і розміром.
  4. Далі вкажіть CompositingMode і CompositingQuality для об’єкта Graphics.
  5. Після цього викличте метод FillEllipse(), щоб намалювати заповнений еліпс.
  6. Повторіть наведені вище кроки, щоб додати більше заповнених еліпсів, що перекриваються різними кольорами, щоб створити нові кольори.
  7. Нарешті, збережіть вихідне зображення за допомогою методу Save().

У наведеному нижче прикладі коду показано, як використовувати режим Compite для керування альфа-змішуванням у C#.

// Цей приклад коду демонструє, як реалізувати альфа-змішування в C#.
// Створіть растрове зображення
Bitmap bitmap = new Bitmap(1000, 800, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);

// Ініціалізація графіки
Graphics graphics = Graphics.FromImage(bitmap);

// Визначте колір пензля
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));

// Встановіть режим компонування для еліпсів, що накладаються,
// кольори еліпсів не змішуються.
graphics.CompositingMode = CompositingMode.SourceCopy;

// кольори еліпсів змішуються один з одним.
//graphics.CompositingMode = CompositingMode.SourceOver;

// Встановіть якість компонування графічного об’єкта.
graphics.CompositingQuality = CompositingQuality.GammaCorrected;

// Намалюйте Еліпси
graphics.FillEllipse(solidBrush1, 300, 100, 400, 400);
graphics.FillEllipse(solidBrush2, 200, 300, 400, 400);
graphics.FillEllipse(solidBrush3, 400, 300, 400, 400);

// Збережіть растрове зображення
bitmap.Save(@"C:\Files\AlphaBlending_SourceOver.png");
Складений режим SourceCopy в альфа-змішуванні за допомогою C#

Режим SourceCopy Compite в альфа-змішуванні за допомогою C#

Ми також можемо використовувати складений режим SourceOver, використовуючи наступний код на кроці № 4.

graphics.CompositingMode = CompositingMode.SourceOver;
Режим SourceOver Compsite в альфа-змішуванні за допомогою C#

Режим SourceOver Compsite в альфа-змішуванні за допомогою C#

Отримайте безкоштовну тимчасову ліцензію

Ви можете отримати безкоштовну тимчасову ліцензію, щоб спробувати Aspose.Drawing for .NET без оціночних обмежень.

Висновок

У цій статті ми навчилися програмно реалізувати техніку альфа-змішування в C#. Крім того, ви можете дізнатися більше про Aspose.Drawing for .NET за допомогою документації і дослідити різні функції, які підтримує API. У разі будь-яких неясностей зв’яжіться з нами на нашому безкоштовному форумі підтримки.

Дивись також