Camstar Generate & Display QR Code

本文内容仅做参考并不完全通用,测试环境为OpcenterEXCR2410,其中数据均为演示所用无实际意义

在VP页面中添加Image Control

从左侧控件中拖出一个Image Control,设置长宽、默认不显示等属性

在CS代码中生成二维码并展示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
public void OptimalPressProgram_DataChanged(object sender, EventArgs e)
{
try
{
string data = _OptimalPressProgram.Data?.ToString();

if (!string.IsNullOrEmpty(data))
{
// 删除旧文件并确保文件夹存在
string qrDir = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Images\\User\\PressQR");

// DeleteDir(qrDir);
CleanOldQrFiles(qrDir, 1);

// 创建文件名和完整路径
string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".png";
string filePath = System.IO.Path.Combine(qrDir, fileName);

// 创建二维码图片
var options = new EncodingOptions
{
Width = 200,
Height = 200,
};

options.Hints.Add(EncodeHintType.CHARACTER_SET, "UTF-8");

var writer = new BarcodeWriter
{
Format = BarcodeFormat.QR_CODE,
Options = options
};

using (Bitmap qrBitmap = writer.Write(data))
{
int borderWidth = 1;
int totalWidth = qrBitmap.Width + borderWidth * 2;
int totalHeight = qrBitmap.Height + borderWidth * 2;

using (Bitmap borderedBitmap = new Bitmap(totalWidth, totalHeight))
using (Graphics g = Graphics.FromImage(borderedBitmap))
using (Pen blackPen = new Pen(System.Drawing.Color.Black, borderWidth))
{
g.Clear(System.Drawing.Color.White); // 白色背景
g.DrawImage(qrBitmap, new Point(borderWidth, borderWidth)); // 绘制二维码
g.DrawRectangle(blackPen, borderWidth / 2, borderWidth / 2, totalWidth - borderWidth, totalHeight - borderWidth); // 画黑边框

borderedBitmap.Save(filePath, ImageFormat.Png); // 保存图像
}
}

_PressQR.ImagePath = "PressQR/" + fileName;
_PressQR.Visible = true;
}
else
{
_PressQR.Visible = false;
}
}
catch (Exception ex)
{
Page.DisplayWarning("发生错误:" + ex.Message);
}
}

创建并设置图片存放文件夹

在代码中为Image控件的属性ImagePath设置为”PressQR/“ + fileName后,Camstar会从C:\Program Files (x86)\Camstar\Camstar Portal\Images\User\PressQR\fileName读取文件

提前在该路径下创建文件夹并赋予权限,此处测试赋给Everyone全部权限(慎用)