Como Personalizar e Estilizar Códigos de Barras em C# com IronBarcode
IronBarcode permite que os desenvolvedores personalizem códigos de barras em C# alterando cores, redimensionando dimensões e adicionando anotações, com chamadas de métodos simples como ChangeBarCodeColor() e ResizeTo() para controle completo de estilo.
Ao longo dos anos, o uso de códigos de barras tornou-se cada vez mais popular e é utilizado em uma ampla gama de aplicações, seja para armazenar dados, IDs ou URLs de páginas da web. Em algumas aplicações, os códigos de barras são tornados visíveis em produtos, resultando em uma demanda crescente por opções de estilo. Portanto, alguns tipos de código de barras desenvolveram aparências únicas, como PDF417, Aztec, IntelligentMail, MaxiCode, DataMatrix e muitos mais. Para uma lista abrangente de formatos suportados, consulte nossa documentação de Formatos de Código de Barras Suportados.
Além disso, o IronBarcode fornece aos usuários opções para estilizar ainda mais os códigos de barras, incluindo aspectos como cores do código de barras, redimensionamento do código de barras e cores de fundo. Isso é possível com a assistência de nossa biblioteca de código aberto, IronDrawing. Essas capacidades de estilo se baseiam nos recursos abrangentes de geração de códigos de barras do IronBarcode.
Início Rápido: Personalizar Cor do Código de Barras e Fundo
Aqui está um exemplo simples mostrando como os desenvolvedores podem aplicar rapidamente cores personalizadas às barras e ao fundo de um código de barras usando o IronBarcode. Você verá como é fácil gerar um código de barras estilizado com apenas uma chamada encadeada. Para exemplos mais avançados, confira nosso tutorial Gerador de Imagens de Código de Barras em C#.
-
Instale IronBarcode com o Gerenciador de Pacotes NuGet
PM > Install-Package BarCode -
Copie e execute este trecho de código.
IronBarCode.BarcodeWriter.CreateBarcode("HELLO123", IronBarCode.BarcodeEncoding.Code128) .ChangeBarCodeColor(IronSoftware.Drawing.Color.Blue) .ChangeBackgroundColor(IronSoftware.Drawing.Color.White) .SaveAsImage("styled.png"); -
Implante para testar em seu ambiente de produção.
Comece a usar IronBarcode em seu projeto hoje com uma avaliação gratuita
- Baixe a biblioteca C# para personalizar e estilizar códigos de barras
- Use o método `ResizeTo` para acionar a re-renderização sem perda
- Use o método `ResizeToMil` para redimensionar o elemento do código de barras
- Alterar as cores do código de barras e do seu fundo.
- Adicione anotações de código de barras acima e abaixo do código de barras.
Como Redimensiono um Código de Barras?
Quando Devo Usar o Método ResizeTo?
Redimensionar um código de barras é um dos aspectos da personalização que os usuários podem alcançar com o IronBarcode. Para usar este recurso, basta chamar o método ResizeTo e inserir as novas medidas de largura e altura em pixels (px) para o código de barras. Esta ação aciona uma re-renderização sem perda do código de barras. Este método mantém a qualidade do código de barras enquanto ajusta suas dimensões, tornando-o perfeito para cenários onde é necessário encaixar códigos de barras em layouts ou tamanhos de impressão específicos.
using IronBarCode;
public class BarcodeResizer
{
public static void ResizeBarcode(string barcodeText, int newWidth, int newHeight)
{
// Generate a barcode
BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128)
// Resize the barcode
.ResizeTo(newWidth, newHeight)
// Save the resized barcode
.SaveAsImage("resized_barcode.png");
}
// Example usage with different size requirements
public static void ResizeForDifferentFormats()
{
var barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128);
// Resize for product label
barcode.ResizeTo(200, 50).SaveAsImage("product_label.png");
// Resize for shipping label
barcode.ResizeTo(300, 75).SaveAsImage("shipping_label.png");
// Resize for inventory tag
barcode.ResizeTo(150, 40).SaveAsImage("inventory_tag.png");
}
}
using IronBarCode;
public class BarcodeResizer
{
public static void ResizeBarcode(string barcodeText, int newWidth, int newHeight)
{
// Generate a barcode
BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128)
// Resize the barcode
.ResizeTo(newWidth, newHeight)
// Save the resized barcode
.SaveAsImage("resized_barcode.png");
}
// Example usage with different size requirements
public static void ResizeForDifferentFormats()
{
var barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128);
// Resize for product label
barcode.ResizeTo(200, 50).SaveAsImage("product_label.png");
// Resize for shipping label
barcode.ResizeTo(300, 75).SaveAsImage("shipping_label.png");
// Resize for inventory tag
barcode.ResizeTo(150, 40).SaveAsImage("inventory_tag.png");
}
}
Imports IronBarCode
Public Class BarcodeResizer
Public Shared Sub ResizeBarcode(barcodeText As String, newWidth As Integer, newHeight As Integer)
' Generate a barcode
BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128) _
.ResizeTo(newWidth, newHeight) _
.SaveAsImage("resized_barcode.png")
End Sub
' Example usage with different size requirements
Public Shared Sub ResizeForDifferentFormats()
Dim barcode = BarcodeWriter.CreateBarcode("PRODUCT-12345", BarcodeEncoding.Code128)
' Resize for product label
barcode.ResizeTo(200, 50).SaveAsImage("product_label.png")
' Resize for shipping label
barcode.ResizeTo(300, 75).SaveAsImage("shipping_label.png")
' Resize for inventory tag
barcode.ResizeTo(150, 40).SaveAsImage("inventory_tag.png")
End Sub
End Class
O método ResizeTo pode ser invocado no objeto GeneratedBarcode. Ao trabalhar com diferentes formatos de saída, você também pode querer explorar nosso guia Criar Código de Barras como PDF. Abaixo estão as imagens do código de barras geradas executando o trecho de código acima.
Antes do Redimensionamento
Após o Redimensionamento
Por Que Usar o Método ResizeToMil para Códigos de Barras 1D?
Outro aspecto de redimensionamento disponível no IronBarcode é o método ResizeToMil. Ao contrário do método ResizeTo, este ajusta os seguintes componentes:
- Elemento do código de barras: A largura do elemento mais estreito do código de barras, medida em milésimos de polegada (mil).
- Altura: A altura do código de barras, medida em polegadas (o padrão é 1 polegada).
- Resolução: Pontos por polegada (o padrão é 96 DPI).
Este método é particularmente adequado para códigos de barras 1D e é comumente usado em aplicações industriais onde medidas precisas são críticas. O sistema de medição mil é um padrão da indústria que garante uma legibilidade consistente do código de barras em diferentes scanners e condições de impressão.
using IronBarCode;
public class BarcodeResizer
{
public static void ResizeBarcodeToMil(string barcodeText, int elementWidthMil, int heightInches, int dpi = 96)
{
// Generate a barcode
BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128)
// Resize the barcode to mil
.ResizeToMil(elementWidthMil, heightInches, dpi)
// Save the resized barcode
.SaveAsImage("resized_barcode_mil.png");
}
// Example for different industrial standards
public static void CreateIndustrialBarcodes()
{
// Standard retail barcode (10 mil width, 1 inch height)
BarcodeWriter.CreateBarcode("RETAIL-001", BarcodeEncoding.Code128)
.ResizeToMil(10, 1, 300)
.SaveAsImage("retail_barcode.png");
// High-density warehouse barcode (5 mil width, 0.5 inch height)
BarcodeWriter.CreateBarcode("WAREHOUSE-002", BarcodeEncoding.Code128)
.ResizeToMil(5, 0.5f, 600)
.SaveAsImage("warehouse_barcode.png");
// Large shipping barcode (15 mil width, 2 inch height)
BarcodeWriter.CreateBarcode("SHIP-003", BarcodeEncoding.Code128)
.ResizeToMil(15, 2, 200)
.SaveAsImage("shipping_barcode.png");
}
}
using IronBarCode;
public class BarcodeResizer
{
public static void ResizeBarcodeToMil(string barcodeText, int elementWidthMil, int heightInches, int dpi = 96)
{
// Generate a barcode
BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128)
// Resize the barcode to mil
.ResizeToMil(elementWidthMil, heightInches, dpi)
// Save the resized barcode
.SaveAsImage("resized_barcode_mil.png");
}
// Example for different industrial standards
public static void CreateIndustrialBarcodes()
{
// Standard retail barcode (10 mil width, 1 inch height)
BarcodeWriter.CreateBarcode("RETAIL-001", BarcodeEncoding.Code128)
.ResizeToMil(10, 1, 300)
.SaveAsImage("retail_barcode.png");
// High-density warehouse barcode (5 mil width, 0.5 inch height)
BarcodeWriter.CreateBarcode("WAREHOUSE-002", BarcodeEncoding.Code128)
.ResizeToMil(5, 0.5f, 600)
.SaveAsImage("warehouse_barcode.png");
// Large shipping barcode (15 mil width, 2 inch height)
BarcodeWriter.CreateBarcode("SHIP-003", BarcodeEncoding.Code128)
.ResizeToMil(15, 2, 200)
.SaveAsImage("shipping_barcode.png");
}
}
Imports IronBarCode
Public Class BarcodeResizer
Public Shared Sub ResizeBarcodeToMil(barcodeText As String, elementWidthMil As Integer, heightInches As Integer, Optional dpi As Integer = 96)
' Generate a barcode
BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128) _
.ResizeToMil(elementWidthMil, heightInches, dpi) _
.SaveAsImage("resized_barcode_mil.png")
End Sub
' Example for different industrial standards
Public Shared Sub CreateIndustrialBarcodes()
' Standard retail barcode (10 mil width, 1 inch height)
BarcodeWriter.CreateBarcode("RETAIL-001", BarcodeEncoding.Code128) _
.ResizeToMil(10, 1, 300) _
.SaveAsImage("retail_barcode.png")
' High-density warehouse barcode (5 mil width, 0.5 inch height)
BarcodeWriter.CreateBarcode("WAREHOUSE-002", BarcodeEncoding.Code128) _
.ResizeToMil(5, 0.5F, 600) _
.SaveAsImage("warehouse_barcode.png")
' Large shipping barcode (15 mil width, 2 inch height)
BarcodeWriter.CreateBarcode("SHIP-003", BarcodeEncoding.Code128) _
.ResizeToMil(15, 2, 200) _
.SaveAsImage("shipping_barcode.png")
End Sub
End Class
Você também pode chamar este método no objeto GeneratedBarcode. Para mais informações sobre como definir dimensões precisas de códigos de barras, consulte nosso guia Definir Margens de Códigos de Barras. Na imagem abaixo, você verá os efeitos da aplicação do método ResizeToMil: os espaços brancos nas bordas do código de barras são eliminados, e tanto o elemento mais estreito quanto a altura do código de barras são ajustados de acordo com os valores dos parâmetros fornecidos ao método.
Antes do ResizeToMil
Após o ResizeToMil
Como Posso Alterar as Cores do Código de Barras e do Fundo?
Um dos recursos mais procurados para estilizar códigos de barras é a capacidade de alterar tanto as cores do código de barras quanto do fundo. Graças ao IronDrawing, o IronBarcode fornece essa capacidade. Usando ambos os métodos ChangeBarCodeColor e ChangeBackgroundColor no objeto GeneratedBarcode, os usuários podem alterar as cores do código de barras e seu fundo. Esse recurso é particularmente útil para fins de branding ou ao criar códigos de barras temáticos para eventos especiais ou linhas de produtos.
using IronBarCode;
using IronSoftware.Drawing; // Required for color manipulation
public class BarcodeColorChanger
{
public static void ChangeBarcodeColors(string barcodeText, Color barcodeColor, Color backgroundColor)
{
// Generate a barcode
var barcode = BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128);
// Change the barcode color
barcode.ChangeBarCodeColor(barcodeColor);
// Change the background color
barcode.ChangeBackgroundColor(backgroundColor);
// Save the colored barcode
barcode.SaveAsImage("colored_barcode.png");
}
// Example: Create branded barcodes with company colors
public static void CreateBrandedBarcodes()
{
// Company brand colors example
var barcode = BarcodeWriter.CreateBarcode("BRAND-2024", BarcodeEncoding.Code128);
// Apply brand colors
barcode.ChangeBarCodeColor(Color.FromHex("#1E3A8A")) // Company blue
.ChangeBackgroundColor(Color.FromHex("#F3F4F6")) // Light gray background
.SaveAsImage("branded_barcode.png");
// Create seasonal variation
var seasonalBarcode = BarcodeWriter.CreateBarcode("HOLIDAY-2024", BarcodeEncoding.Code128);
seasonalBarcode.ChangeBarCodeColor(Color.DarkGreen)
.ChangeBackgroundColor(Color.LightYellow)
.SaveAsImage("seasonal_barcode.png");
}
}
using IronBarCode;
using IronSoftware.Drawing; // Required for color manipulation
public class BarcodeColorChanger
{
public static void ChangeBarcodeColors(string barcodeText, Color barcodeColor, Color backgroundColor)
{
// Generate a barcode
var barcode = BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128);
// Change the barcode color
barcode.ChangeBarCodeColor(barcodeColor);
// Change the background color
barcode.ChangeBackgroundColor(backgroundColor);
// Save the colored barcode
barcode.SaveAsImage("colored_barcode.png");
}
// Example: Create branded barcodes with company colors
public static void CreateBrandedBarcodes()
{
// Company brand colors example
var barcode = BarcodeWriter.CreateBarcode("BRAND-2024", BarcodeEncoding.Code128);
// Apply brand colors
barcode.ChangeBarCodeColor(Color.FromHex("#1E3A8A")) // Company blue
.ChangeBackgroundColor(Color.FromHex("#F3F4F6")) // Light gray background
.SaveAsImage("branded_barcode.png");
// Create seasonal variation
var seasonalBarcode = BarcodeWriter.CreateBarcode("HOLIDAY-2024", BarcodeEncoding.Code128);
seasonalBarcode.ChangeBarCodeColor(Color.DarkGreen)
.ChangeBackgroundColor(Color.LightYellow)
.SaveAsImage("seasonal_barcode.png");
}
}
Imports IronBarCode
Imports IronSoftware.Drawing ' Required for color manipulation
Public Class BarcodeColorChanger
Public Shared Sub ChangeBarcodeColors(barcodeText As String, barcodeColor As Color, backgroundColor As Color)
' Generate a barcode
Dim barcode = BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128)
' Change the barcode color
barcode.ChangeBarCodeColor(barcodeColor)
' Change the background color
barcode.ChangeBackgroundColor(backgroundColor)
' Save the colored barcode
barcode.SaveAsImage("colored_barcode.png")
End Sub
' Example: Create branded barcodes with company colors
Public Shared Sub CreateBrandedBarcodes()
' Company brand colors example
Dim barcode = BarcodeWriter.CreateBarcode("BRAND-2024", BarcodeEncoding.Code128)
' Apply brand colors
barcode.ChangeBarCodeColor(Color.FromHex("#1E3A8A")) ' Company blue
.ChangeBackgroundColor(Color.FromHex("#F3F4F6")) ' Light gray background
.SaveAsImage("branded_barcode.png")
' Create seasonal variation
Dim seasonalBarcode = BarcodeWriter.CreateBarcode("HOLIDAY-2024", BarcodeEncoding.Code128)
seasonalBarcode.ChangeBarCodeColor(Color.DarkGreen) _
.ChangeBackgroundColor(Color.LightYellow) _
.SaveAsImage("seasonal_barcode.png")
End Sub
End Class
Ao trabalhar com códigos de barras coloridos, é importante manter um contraste suficiente entre as cores do código de barras e do fundo para garantir a legibilidade. Para mais opções de estilo específicas para códigos QR, veja nosso tutorial Personalizar e Estilizar Códigos QR.
Como acrescentar anotações a um código de barras?
IronBarcode também oferece a opção de adicionar e estilizar anotações de códigos de barras. A estilização para anotações também é auxiliada pela funcionalidade do IronDrawing, incluindo edição da cor e fontes da anotação. As anotações são essenciais para fornecer informações legíveis por humanos junto com o código de barras legível pela máquina, tornando-as cruciais para gerenciamento de inventário, rotulagem de produtos e aplicações de envio.
using IronBarCode;
using IronSoftware.Drawing; // Required for font and color manipulation
public class BarcodeAnnotator
{
public static void AnnotateBarcode(string barcodeText, string annotationText, Font annotationFont, Color annotationColor, float annotationSpacing)
{
// Generate a barcode
var barcode = BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128);
// Add annotation above the barcode
barcode.AddAnnotationTextAboveBarcode(annotationText, annotationFont, annotationColor, annotationSpacing);
// Add barcode value text below the barcode
barcode.AddBarcodeValueTextBelowBarcode(annotationFont, annotationColor, annotationSpacing);
// Save the annotated barcode
barcode.SaveAsImage("annotated_barcode.png");
}
// Example: Create product label with annotations
public static void CreateProductLabel()
{
var productCode = "PRD-12345-XL";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128);
// Define fonts for different purposes
var titleFont = new Font("Arial", FontStyle.Bold, 14);
var valueFont = new Font("Arial", FontStyle.Regular, 12);
// Add product name above
barcode.AddAnnotationTextAboveBarcode("Premium Widget XL", titleFont, Color.Black, 5);
// Add product code below
barcode.AddBarcodeValueTextBelowBarcode(valueFont, Color.DarkGray, 3);
// Apply additional styling
barcode.ResizeTo(250, 80)
.SaveAsImage("product_label_annotated.png");
}
}
using IronBarCode;
using IronSoftware.Drawing; // Required for font and color manipulation
public class BarcodeAnnotator
{
public static void AnnotateBarcode(string barcodeText, string annotationText, Font annotationFont, Color annotationColor, float annotationSpacing)
{
// Generate a barcode
var barcode = BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128);
// Add annotation above the barcode
barcode.AddAnnotationTextAboveBarcode(annotationText, annotationFont, annotationColor, annotationSpacing);
// Add barcode value text below the barcode
barcode.AddBarcodeValueTextBelowBarcode(annotationFont, annotationColor, annotationSpacing);
// Save the annotated barcode
barcode.SaveAsImage("annotated_barcode.png");
}
// Example: Create product label with annotations
public static void CreateProductLabel()
{
var productCode = "PRD-12345-XL";
var barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128);
// Define fonts for different purposes
var titleFont = new Font("Arial", FontStyle.Bold, 14);
var valueFont = new Font("Arial", FontStyle.Regular, 12);
// Add product name above
barcode.AddAnnotationTextAboveBarcode("Premium Widget XL", titleFont, Color.Black, 5);
// Add product code below
barcode.AddBarcodeValueTextBelowBarcode(valueFont, Color.DarkGray, 3);
// Apply additional styling
barcode.ResizeTo(250, 80)
.SaveAsImage("product_label_annotated.png");
}
}
Imports IronBarCode
Imports IronSoftware.Drawing ' Required for font and color manipulation
Public Class BarcodeAnnotator
Public Shared Sub AnnotateBarcode(barcodeText As String, annotationText As String, annotationFont As Font, annotationColor As Color, annotationSpacing As Single)
' Generate a barcode
Dim barcode = BarcodeWriter.CreateBarcode(barcodeText, BarcodeEncoding.Code128)
' Add annotation above the barcode
barcode.AddAnnotationTextAboveBarcode(annotationText, annotationFont, annotationColor, annotationSpacing)
' Add barcode value text below the barcode
barcode.AddBarcodeValueTextBelowBarcode(annotationFont, annotationColor, annotationSpacing)
' Save the annotated barcode
barcode.SaveAsImage("annotated_barcode.png")
End Sub
' Example: Create product label with annotations
Public Shared Sub CreateProductLabel()
Dim productCode = "PRD-12345-XL"
Dim barcode = BarcodeWriter.CreateBarcode(productCode, BarcodeEncoding.Code128)
' Define fonts for different purposes
Dim titleFont = New Font("Arial", FontStyle.Bold, 14)
Dim valueFont = New Font("Arial", FontStyle.Regular, 12)
' Add product name above
barcode.AddAnnotationTextAboveBarcode("Premium Widget XL", titleFont, Color.Black, 5)
' Add product code below
barcode.AddBarcodeValueTextBelowBarcode(valueFont, Color.DarkGray, 3)
' Apply additional styling
barcode.ResizeTo(250, 80).SaveAsImage("product_label_annotated.png")
End Sub
End Class
Como uma extensão do snippet de código anterior, instanciamos dois novos objetos IronSoftware.Drawing.Font para servir como fontes para anotações tanto acima quanto abaixo do código de barras. Apenas a Família de Fontes é necessária para instanciar a fonte, embora você possa especificar propriedades adicionais como tamanho e estilo para mais controle.
AddAnnotationTextAboveBarcode: Adiciona texto de anotação personalizado acima do código de barras.AddBarcodeValueTextBelowBarcode: Adiciona o valor do código de barras abaixo do código de barras.
Estes dois métodos aceitam os mesmos parâmetros: os objetos IronSoftware.Drawing.Font, um objeto IronSoftware.Drawing.Color e a quantidade de espaço entre o código de barras e o texto. Além disso, o método AddAnnotationTextAboveBarcode requer uma string para o texto da anotação, pois adiciona texto personalizado acima do código de barras.
IronBarcode oferece uma ampla gama de opções de personalização para estilizar códigos de barras. Para aplicações que exigem suporte Unicode em anotações, confira nosso guia Escrevendo Códigos de Barras Unicode. Para saber mais sobre como personalizar códigos QR, consulte "Como Personalizar e Adicionar Logotipos a Códigos QR". Para exportar códigos de barras estilizados para diferentes formatos, explore nosso tutorial Criar Código de Barras como HTML.
Perguntas frequentes
Como posso alterar a cor de um código de barras em C#?
O IronBarcode oferece o método ChangeBarCodeColor() para personalizar facilmente as cores dos códigos de barras. Basta encadear esse método após a criação do código de barras para aplicar qualquer cor da paleta IronSoftware.Drawing.Color, permitindo controle total sobre a aparência visual dos seus códigos de barras.
Qual método devo usar para redimensionar um código de barras sem perder qualidade?
Use o método ResizeTo() do IronBarcode para redimensionar códigos de barras sem perda de qualidade. Este método aciona uma nova renderização do código de barras sem perda de qualidade, na largura e altura especificadas em pixels, mantendo a nitidez e ajustando as dimensões para se adequarem a layouts específicos ou requisitos de impressão.
Posso personalizar a cor de fundo dos meus códigos de barras?
Sim, o IronBarcode permite personalizar os fundos dos códigos de barras usando o método ChangeBackgroundColor(). Esse recurso permite definir qualquer cor de fundo usando a paleta IronSoftware.Drawing.Color, possibilitando uma integração perfeita com os seus requisitos de design.
Quais formatos de código de barras oferecem opções de estilo exclusivas?
O IronBarcode suporta diversos formatos de código de barras com aparências exclusivas, incluindo PDF417, Aztec, IntelligentMail, MaxiCode e DataMatrix. Cada formato possui características visuais distintas, permitindo ainda personalização adicional através dos métodos de estilização do IronBarcode.
Como adiciono anotações a códigos de barras?
O IronBarcode permite adicionar anotações acima e abaixo dos códigos de barras, melhorando a legibilidade e fornecendo contexto adicional. Esse recurso é particularmente útil para adicionar texto legível, códigos de produtos ou outras informações de identificação junto ao código de barras.
Qual a diferença entre os métodos ResizeTo e ResizeToMil?
O IronBarcode oferece dois métodos de redimensionamento: ResizeTo() para redimensionamento baseado em pixels com renderização sem perda de qualidade e ResizeToMil() para redimensionar o elemento do código de barras usando medidas em milésimos de polegada (mil). Ambos os métodos mantêm a qualidade, atendendo a diferentes requisitos de medição.

