wpf - 我正在寻找以窗口形式存在的 wpf 中的图形类
问题描述
这是我的代码,我想将其转换为 wpf,但遇到了太多困难。请有人帮助我。问题是首先找到我发现为位图图像的位图的替换,但现在我无法找到一个替换图形的类,这是我的代码:
string barcode = textBox1.Text;
Bitmap bitmap = new Bitmap(barcode.Length * 40, 150);
// i changed bitmap to this
BitmapImage myBitmapImage = new BitmapImage();
using (Graphics graphics = Graphics.FromImage(bitmap))
{
Font oFont = new System.Drawing.Font("IDAutomationHC39M", 20);
PointF point = new PointF(2f, 2f);
SolidBrush black = new SolidBrush(Color.Black);
SolidBrush white = new SolidBrush(Color.White);
graphics.FillRectangle(white, 0, 0, bitmap.Width, bitmap.Height);
graphics.DrawString("*" + barcode + "*", oFont,black,point);
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, ImageFormat.Png);
pictureBox1.Image = bitmap;
pictureBox1.Height = bitmap.Height;
pictureBox1.Width = bitmap.Width;
}
sd = new SaveFileDialog();
sd.Filter = "PNG File|*.png";
if(sd.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image.Save(sd.FileName,
System.Drawing.Imaging.ImageFormat.Png);
}
解决方案
如果您的系统上安装了条形码字体,以下方法会创建一个包含条形码文本的位图:
private BitmapSource CreateBarcodeBitmap(string barcodeText)
{
var text = new FormattedText(
barcodeText, CultureInfo.InvariantCulture, FlowDirection.LeftToRight,
new Typeface("IDAHC39M Code 39 Barcode Standard"), 20, Brushes.Black);
var rect = new Rect(0, 0, text.Width, text.Height);
var visual = new DrawingVisual();
using (var drawingContext = visual.RenderOpen())
{
drawingContext.DrawRectangle(Brushes.White, null, rect);
drawingContext.DrawText(text, new Point());
}
var bitmap = new RenderTargetBitmap(
(int)rect.Width, (int)rect.Height, 96, 96, PixelFormats.Default);
bitmap.Render(visual);
return bitmap;
}
您现在可以将返回值分配给 UI 中 Image 元素的 Source 属性,或将其传递给例如 aPngBitmapEncoder
以将其写入 PNG 文件,例如:
var barcodeBitmap = CreateBarcodeBitmap("1234567890");
var encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(barcodeBitmap));
using (var fileStream = new FileStream("barcode.png", FileMode.Create))
{
encoder.Save(fileStream);
}
推荐阅读
- mysql - 在 Ubuntu 20.04 上配置 MariaDB
- reactjs - Reactjs - 使用打字稿时createStore无法识别reducer
- flutter - 如何在 BlocBuilder Flutter 中延迟返回屏幕
- objective-c - 如何修复 UIScrollView 在 .xib 问题中不滚动?
- android-studio - 在 Android Studio (Windows 10) 中安装 HAXM 时遇到问题
- java - 在 Java 字符串中查找给定字符之前的最后一个字符
- r - ggplot中的内部刻度
- azure - MS 图形 API 无法授予应用程序角色
- python - 关于python evdev rfid卡扫描仪数据的问题
- c# - 如何在允许 html 内容的 mvc web api c# 中禁用验证属性