初始化上传
This commit is contained in:
176
常用工具集/Views/03图片相关/二维码条形码生成.axaml.cs
Normal file
176
常用工具集/Views/03图片相关/二维码条形码生成.axaml.cs
Normal file
@@ -0,0 +1,176 @@
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using Avalonia;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Media.Imaging;
|
||||
using Avalonia.Platform.Storage;
|
||||
using MES.Utility.Core;
|
||||
using SkiaSharp;
|
||||
using Ursa.Controls;
|
||||
using ZXing;
|
||||
using 常用工具集.Base;
|
||||
using 常用工具集.Utility.Qrcode;
|
||||
|
||||
namespace 常用工具集;
|
||||
|
||||
public partial class 二维码条形码生成 : UserControl
|
||||
{
|
||||
private SKBitmap Image;
|
||||
private string svg;
|
||||
public 二维码条形码生成()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private Bitmap BitmapToBitmapImage(SKBitmap skBitmap)
|
||||
{
|
||||
byte[] bytes = null;
|
||||
using (MemoryStream stream = new MemoryStream())
|
||||
{
|
||||
skBitmap.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
|
||||
bytes = stream.ToArray();
|
||||
}
|
||||
using (MemoryStream stream = new MemoryStream(bytes))
|
||||
{
|
||||
return new Bitmap(stream);
|
||||
}
|
||||
}
|
||||
|
||||
private void btnGenerate_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (txtContent.Text.IsNullOrEmpty())
|
||||
{
|
||||
MessageBox.ShowAsync("请输入内容");
|
||||
return;
|
||||
}
|
||||
if (rdChecked1.IsChecked.Value)
|
||||
{
|
||||
SKBitmap image = QRCodeUtils.EncodeQrCode(txtContent.Text, 900, out svg);
|
||||
Image = image;
|
||||
image1.Source = BitmapToBitmapImage(image);
|
||||
}
|
||||
else if (rdChecked2.IsChecked.Value)
|
||||
{
|
||||
SKBitmap image = DataMatrixUtils.EncodeDataMatrix(DmtxSymbolSize.DmtxSymbol12x12, txtContent.Text, 900, out svg);
|
||||
Image = image;
|
||||
image1.Source = BitmapToBitmapImage(image);
|
||||
}
|
||||
else if (rdChecked3.IsChecked.Value)
|
||||
{
|
||||
SKBitmap image = DataMatrixUtils.EncodeDataMatrix(DmtxSymbolSize.DmtxSymbol16x16, txtContent.Text, 900, out svg);
|
||||
Image = image;
|
||||
image1.Source = BitmapToBitmapImage(image);
|
||||
}
|
||||
else if (rdChecked4.IsChecked.Value)
|
||||
{
|
||||
SKBitmap image = BarCodeUtils.EncodeBarCode(BarcodeFormat.CODE_39, txtContent.Text, 900, 500, out svg);
|
||||
Image = image;
|
||||
image1.Source = BitmapToBitmapImage(image);
|
||||
}
|
||||
else if (rdChecked5.IsChecked.Value)
|
||||
{
|
||||
SKBitmap image = BarCodeUtils.EncodeBarCode(BarcodeFormat.CODE_128, txtContent.Text, 900, 500, out svg);
|
||||
Image = image;
|
||||
image1.Source = BitmapToBitmapImage(image);
|
||||
}
|
||||
}
|
||||
private async void btnSave_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (Image == null)
|
||||
return;
|
||||
|
||||
var sp = GlobalValues.StorageProvider;
|
||||
if (sp is null) return;
|
||||
var result = await sp.SaveFilePickerAsync(new FilePickerSaveOptions()
|
||||
{
|
||||
Title = "保存图像",
|
||||
DefaultExtension = "png"
|
||||
});
|
||||
if (result == null) return;
|
||||
string temp = result.Path.LocalPath;
|
||||
Save(temp, Image);
|
||||
}
|
||||
|
||||
private void Save(string path, SKBitmap bitmap)
|
||||
{
|
||||
using (var stream = File.OpenWrite(path))
|
||||
{
|
||||
bitmap.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
|
||||
}
|
||||
}
|
||||
private async void btnSaveSVG_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (Image == null)
|
||||
return;
|
||||
var sp = GlobalValues.StorageProvider;
|
||||
if (sp is null) return;
|
||||
var result = await sp.SaveFilePickerAsync(new FilePickerSaveOptions()
|
||||
{
|
||||
Title = "保存SVG",
|
||||
DefaultExtension = "svg"
|
||||
});
|
||||
if (result == null) return;
|
||||
string temp = result.Path.LocalPath;
|
||||
System.IO.File.WriteAllText(temp, svg, Encoding.UTF8);
|
||||
}
|
||||
|
||||
private void TextBox_KeyDown(object? sender, Avalonia.Input.KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyModifiers == Avalonia.Input.KeyModifiers.Control)
|
||||
{
|
||||
e.Handled = true;
|
||||
if (e.Key == Key.LeftCtrl || e.Key == Key.RightCtrl)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.Key == Key.V)
|
||||
{
|
||||
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (e.Key == Key.Enter)
|
||||
{
|
||||
btnGenerate_Click(sender, e);
|
||||
}
|
||||
else if (e.KeyModifiers == KeyModifiers.Control && e.Key == Key.S)
|
||||
{
|
||||
e.Handled = true;
|
||||
btnSave_Click(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void UserControl_KeyDown(object? sender, Avalonia.Input.KeyEventArgs e)
|
||||
{
|
||||
if (e.Key == Key.Enter)
|
||||
{
|
||||
btnGenerate_Click(sender, e);
|
||||
}
|
||||
else if (e.KeyModifiers == KeyModifiers.Control && e.Key == Key.C)
|
||||
{
|
||||
e.Handled = true;
|
||||
if (Image == null)
|
||||
return;
|
||||
byte[] bytes = null;
|
||||
using (MemoryStream stream = new MemoryStream())
|
||||
{
|
||||
Image.Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream);
|
||||
bytes = stream.ToArray();
|
||||
}
|
||||
DataObject clipboardData = new DataObject();
|
||||
clipboardData.Set(DataFormats.Files, BitmapToBitmapImage(Image));
|
||||
GlobalValues.Clipboard.SetDataObjectAsync(clipboardData);
|
||||
}
|
||||
else if (e.KeyModifiers == KeyModifiers.Control && e.Key == Key.S)
|
||||
{
|
||||
e.Handled = true;
|
||||
btnSave_Click(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user