Win Form信息系统开发过程中,除了基本信息的存储、管理与查询之外,还需要对检索到的信息进行输出显示与打印等。本文主要结合具体案例项目对C# Win Form中使用绘图类、打印相关类及方法实现打印输出操作进行说明,希望对初学者有所帮助。本项目最终实现通过打印机输出显示比赛选手的参赛证,打印输出效果如下:
如上图,本项目主要任务是通过选手填写注册信息,完成填写时按照参赛证样式自动生成参赛证预览效果,并最终支持参赛证的打印输出操作。主要输出内容包括:
- 比赛名称
- 选手照片
- 选手姓名Name
- 技能竞赛项目Skills
- 选手编号Number
任务给出设计样式描述如下图:
问题解决思路与代码描述
该问题解决主要是利用C# GDI提供的绘图功能按照任务要求样式效果要求调用获取的参赛证信息进行绘图操作,将各类需要信息绘制到bitmap对象中,通过前端pictureBox显示参赛证,并调用printdocument对象对bitmap图片进行打印输出。本文主要针对第一部分bitmap绘图部分进行说明,调用打印输出类实现打印机打印输出后期再做说明与介绍。
GDI基本知识说明
- Bitmap:位图类,Bitmap是用于处理由像素数据定义的图像的对象。
- Graphics:图形类,Graphics类提供了将对象绘制到显示设备的方法。
- Font:字体类,Font用于设置输出显示字体的格式
- Brush:画刷类,定义用于填充图形形状(如矩形、椭圆、饼形、多边形和封闭路径)的内部的对象。这是一个抽象基类,不能进行实例化,若要创建一个画笔对象,使用从 Brush 派生出的类,如 SolidBrush、TextureBrush 和 LinearGradientBrush。
- Pen:画笔类,Pen类是C#语言当中专门的画笔类,主要用于实现变量轮廓等的绘制
- drawstring():绘制文本字符串
7. drawimage();绘制image图片
以上部分给出了该项目实现所需的基本对象、方法等,在明确这些内容之后可以调用存储的竞赛者报名信息之后调用CDI所提供的图形化对象及方法完成bitmap的绘制。本例设计窗体样式如下:
本项目前期获取的数据包括bpm选手照片位图资源、竞赛名称(the world skills china 2016)、选手名称(LiZhi)、技能编号(06-CNC Turning)、选手编号(20160601);其获取过程本文不再详细说明,在明确要输出的信息之后按照格式要求逐步将对应信息输出到bpm指定位置。绘制过程如下:
1、输出竞赛名称
输出竞赛名称代码如上,其中g为Graphics实例化对象,首先通过clear方法用白色清除绘图区域内容。str为竞赛名称字符串,kk为绘图顶点x坐标,lend为绘图顶点y坐标,f为font对象,drawstring()需要4个参数实现将竞赛名称进行绘制与输出。
2、输出照片
输出照片主要需要调用dramimage方法进行输出,需要按照该方法参数要求,构造对应参数。部分代码如下:
DrawImage方法需要两个参数,分别是输出的img图片、输出图片的坐标位置,本例坐标使用的是Point对象。
3、输出参赛者信息
输出参赛者信息主要是调用drawstring方法对字符串进行输出,关键注意问题是输出的坐标位置。本例对Name Skills Number单独进行输出,对应的值进行单独输出,值下的横线采用drawline进行了直线的绘制。
4、将生成的bitmap bmp与picturebox进行关联
在完成绘图后需要在窗口进行输出与显示,因此需要将pictureBox的image属性设置为bmp,实现在窗口进行输出与显示。
5、其他初始化及资源释放
在使用GDI进行绘图时首选需要对各种绘图类进行初始化,在窗口关闭时需要进一步释放各类资源。核心代码如下:
最终实现效果展示gif动图描述如下:
本头条号长期关注于青少年编程资讯分享;编程课程、素材、代码分享及青少年编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。期待大家关注!
往期内容分享如下:
- Win Form登录框本地记住密码功能实现
- C# Win Form 编程实现图片的数据库存储
- C# Win Form 实现XML文件读写
- C# Win Form 读取CSV文件数据
- C# Win Form 动态添加CheckBox控件
- C# Win Form 窗体间传递参数的几种方法总结
- C# win Form开发 构造指定格式数据表字段值
- C# Win Form 记录集分页显示的实现
- C# Win Form 字符串函数与正则表达式取子串