FAQ TBarCode .NET
Как управлять прозрачностью растрового изображения
Как управлять прозрачностью растрового изображения
При создании штрихкода в растровом формате есть две возможности настроить фон:
- IsBackgroundTransparent = TRUE → При отрисовке штрихкода (DC, Graphics, Bitmap) рисуются только штрихи, остальное остаётся свободным
- IsBackgroundTransparent = FALSE → При отрисовке штрихкода (DC, Graphics, Bitmap) сначала заполняется фон, затем рисуются штрихи
Рекомендуемый порядок работы
Если вы хотите создать растровый штрихкод с прозрачным фоном, вам нужно задать цвет прозрачности отдельно. Для этого сначала выполните отрисовку в растровое изображение, задайте прозрачность, а затем сохраните его. Попробуйте один из двух следующих вариантов:
Вариант №1
Отрисуйте штрихкод с белым фоном:
- IsBackgroundTransparent := FALSE (→ библиотека штрихкодов рисует белый фон)
Укажите цвет прозрачности:
- bitmap.MakeTransparent( Color.White ); //make be background transparent - this will be an index (rather than an alpha) transparency
Пример кода на C#:
Barcode BC = new Barcode();
int width = 300;
int height = 150;
BC.BarcodeType = BarcodeType.Code128;
BC.Data = "12345";
BC.IsBackgroundTransparent = false;
BC.BoundingRectangle = new Rectangle(0, 0, width, height); // Pixel
Bitmap bitmap = new Bitmap(width, height);
Graphics gfx = Graphics.FromImage(bitmap);
BC.Draw(gfx);
bitmap.MakeTransparent(Color.White);
bitmap.Save("c:\\temp\\test1a.png", System.Drawing.Imaging.ImageFormat.Png);
Вариант без объекта graphics:
Barcode BC = new Barcode();
int width = 300;
int height = 150;
BC.BarcodeType = BarcodeType.Code128;
BC.Data = "12345";
BC.IsBackgroundTransparent = false;
BC.BoundingRectangle = new Rectangle(0, 0, width, height); // Pixel
Bitmap bitmap = BC.DrawBitmap();
bitmap.MakeTransparent(Color.White);
bitmap.Save("c:\\temp\\test1b.png", System.Drawing.Imaging.ImageFormat.Png);
Вариант №2
Отрисуйте штрихкод без фона:
- IsBackgroundTransparent := FALSE (→ библиотека штрихкодов рисует белый фон)
Заполните фон прозрачностью:
- gfx.Clear(Color.Transparent);
Пример кода на C#:
Barcode BC = new Barcode();
int width = 300;
int height = 150;
BC.BarcodeType = BarcodeType.Code128;
BC.Data = "12345";
BC.IsBackgroundTransparent = true;
BC.BoundingRectangle = new Rectangle(0, 0, width, height); // Pixel
Bitmap bitmap = new Bitmap(width, height);
Graphics gfx = Graphics.FromImage(bitmap);
gfx.Clear(Color.Transparent);
gfx.Flush();
BC.Draw(gfx);
bitmap.Save("c:\\temp\\test2.png", System.Drawing.Imaging.ImageFormat.Png);
Примечания
- Обратите внимание, что пример штрихкода не оптимизирован по пикселям.
- Мы рекомендуем использовать изображения PNG.
- Дополнительную информацию о прозрачности можно найти здесь.