
Existe uma biblioteca
ZXing popular para saída / leitura de códigos de barras. Pode produzir e ler muitos formatos diferentes: QRCode, Aztec e outros, mais de duas dúzias. Para leitura de códigos, ele possui um ZXingScannerView de controle pronto. É necessário um mínimo de código para adicionar essa funcionalidade ao seu aplicativo.
No entanto, usando esta biblioteca, o código será exibido canonicamente, em preto e branco. Considere o caso em que você precisa retratar um código de aparência personalizada, por exemplo, colorido, com elementos arredondados ou decorado de outra maneira (e para que ele continue a ser lido bem).
E a verdadeira liberdade de criatividade só se abre se você desenhar o código - tudo estará completamente em suas mãos. É o que faremos com o exemplo de um código QR.
A aplicação finalizada está aqui .Este artigo implementa um algoritmo retirado do artigo: o
algoritmo de geração de código QR , o desenho usando a biblioteca
SkiaSharp é
afetado e um exemplo de aplicação de um gerador de código QR com alguns elementos decorativos é fornecido - destaque, suavização de linhas e plano de fundo de um arquivo png.
Explicações para implementação
Vamos começar criando um aplicativo Xamarin.Forms vazio. Crie um novo projeto no Visual Studio, como "Aplicativo móvel (Xamarin.Forms)" e selecione o modelo "Em branco". Na seção "Plataformas", selecione qualquer, o SkiaSharp funciona em várias plataformas, incluindo Android e iOS.
Projetos .Android e .iOS permanecem inalterados, temos uma implementação de plataforma cruzada.
Em um projeto de plataforma cruzada:
duas imagens de fundo foram adicionadas - uma para a página inteira e a outra para o código QR. Observe que eles têm um "recurso incorporado" de "Ação de compilação".
A saída está nos arquivos MainPage.xaml e MainPage.xaml.cs
A classe ImageResourceExtension para usar imagens de recursos no xaml.
Toda a lógica está no projeto QRCodeEncoder. É dividido entre classes:
- Codificador - codifica uma sequência de dados em uma sequência de uns e zeros
- Renderer - posicione corretamente a matriz de dados resultante, adicione informações gerais e retorne o arquivo png ao Stream
O algoritmo de geração de código QR possui muitos livros de referência com números. O que todos eles significam, consulte o artigo "Algoritmo de geração de código QR" (veja acima).
A codificação Kanji (para caracteres) não é implementada no aplicativo.
Skiasharp
SkiaSharp é uma biblioteca de desenhos 2D multiplataforma para .NET. É baseado na
Biblioteca Gráfica Skia do Google. Disponível como um pacote NuGet:
nuget install SkiaSharp
Documentação da Microsoft:
SkiaSharp no Xamarin.FormsTodo desenho ocorre no método Draw da classe Renderer. Por exemplo, alguns elementos são redondos, outros são quadrados:
canvas.DrawCircle() canvas.DrawRect()
alguns são destacados:
var paint1 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Fill, Color = SKColors.DeepSkyBlue }; var paint2 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Fill, Color = SKColors.Red }; var paint3 = new SKPaint { IsAntialias = true, Style = SKPaintStyle.Fill, Color = SKColors.Gold };
e mostra como suavizar a transição entre elementos adjacentes.
Exemplos
E, finalmente, exemplos de alguns códigos QR interessantes da Internet:





