首先我们要在视图获取到证书信息表选中行,并只能选中一条证书信息表数据,然后获取到证书ID,最后打开一个新的页面。
视图的样式完成后,我们则在控制器写我们需要完成的功能,首先使用try…catch… 获取异常,然后在查询证书信息,把需要的数据全部查询出来,查询的数据如下图:
查询出来后我们需要生成一张证书图片,把我们刚刚查询出来的数据全部填写到图片中该填写的位置。
获取空白证书的物理地址
string filePath =Server.MapPath("~/Content/images/Credential2.png");
将图片转化为位图(栅格图)
Bitmap bitmap = new Bitmap(filePath);
封装一个绘画图面
Graphics g = Graphics.FromImage(bitmap);
定义单色的画笔
SolidBrush solidBrush = new SolidBrush(Color.Black);
DrawString:在指定的位置用指定的画笔(Brush)和字体(Font)对象绘制指定的文本字符串
DrawString里面的内容数据分别为(要绘制的文本内容,所使用的字体,绘制文本的画刷,开始绘制的坐标点)
考生姓名
g.DrawString(dbCertificate.StudentName,new Font("宋体", 14), solidBrush,110, 146);
考试时间
g.DrawString(dbCertificate.StTime.Value.Year.ToString(),new Font("宋体", 14), solid Brush,105, 175); 时间单位:年
g.DrawString(dbCertificate.StTime.Value.Month.ToString(),new Font("宋体", 14), solidBrush,173, 175); 时间单位:月
g.DrawString(dbCertificate.StTime.Value.Day.ToString(),new Font("宋体", 14), solidBrush,220, 175); 时间单位:日
绘制成绩
g.DrawString(dbCertificate.Achievement.ToString(),new Font("宋体", 14), solidBrush,184, 200);
绘制证书编号
g.DrawString(dbCertificate.CertificateNumber.Trim(),new Font("宋体", 14), solidBrush,150, 268);
绘制证书时间
string strDate =dbCertificate.IssuanceTime.Value.ToString("yyyy年MM月dd日");
g.DrawString(strDate,new Font("宋体", 14), solidBrush,340, 332);
实例化 MemoryStream
MemoryStream ms = new MemoryStream();
将图像以jpeg的格式保存到流中
bitmap.Save(ms,ImageFormat.Jpeg);
以byte类型输出
byte[] newByte =ms.ToArray();