初始化上传

This commit is contained in:
2025-08-26 08:37:44 +08:00
commit 31d81b91b6
448 changed files with 80981 additions and 0 deletions

View 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);
}
}
}