FAQ TBarCode .NET
Как управлять размером штрихкода?
Как управлять размером штрихкода?
Вы можете выбрать между двумя режимами размера:
- Режим размера Fit to Bounding Rectangle
Штрихкод подстраивается под ограничивающий прямоугольник с автоматическим расчётом ширины модуля. Свойство ширины модуля — это лишь значение Get/Set и не обновляется. - Режим размера Custom Module Width
Размер штрихкода зависит от свойства ширины модуля, которое задаётся в [мм]. Штрихкод всё равно подстраивается под ограничивающий прямоугольник в том измерении, где ширина модуля не важна (например, высота в линейном коде).
Ограничивающий прямоугольник должен быть задан в [мм] для расчётов размера, таких как CalculateModuleWidth или CalculateBarcodeSize.
Ограничивающий прямоугольник должен быть задан в [пикселях] для любых операций рисования, связанных с растровым изображением или контекстом устройства.
Рекомендуемый порядок работы
Для любых операций сначала задайте прямоугольник, затем выполняйте операцию или расчёт.
Рекомендуется сначала делать всё в [мм], а если вы рисуете в растровое изображение, преобразовать мм в пиксели с учётом заданного DPI.
- Задайте штрихкод и данные штрихкода
- Задайте ограничивающий прямоугольник в [мм], задайте режим размера и, если применимо, ширину модуля
- Задайте DPI, если применимо
- Если вы используете пользовательскую ширину модуля: выполните функции получения/расчёта размера (возвращаемые значения — в мм). Это необходимо, поскольку ваш ограничивающий прямоугольник может не отражать реальный размер штрихкода.
- Если вам нужно растровое изображение, преобразуйте возвращённый размер в пиксели и задайте ограничивающий прямоугольник в пикселях
Для создания растровых изображений, где размер штрихкода не предопределён конкретными требованиями, есть также функция CalculateOptimalBitmapSize. Эта функция избегает ошибок квантования и улучшает качество.
barcode.Dpi = 100; barcode.SizeMode = SizeMode.FitToBoundingRectangle; Size optimalSize = barcode.CalculateOptimalBitmapSize(null, 1, 1); // 1 Module = 1 Pixel barcode.BoundingRectangle = new Rectangle(0, 0, optimalSize.Width, optimalSize.Height); barcode.Draw(filename, ImageType.Jpg);