聊聊即时打印贴标机(实时打印贴标机)上位机软件开发(2)

前一篇文章,简单的介绍了一下即时打印贴标机(实时打印贴标机)。这篇文章,我们聊聊即时打印贴标机的上位机软件开发。

本质
其实抛开即时打印贴标机的贴标功能模块,即时打印贴标机其余部分本质上就是一台打印机。所以,我们的上位机软件开发,其实就是调用这台打印机来打印一些东西出来,跟我们在其它打印机(比如办公室常用的HP打印机)上开发打印功能没什么区别。

对于开发windows桌面程序的程序猿来说,或多或少都接触过打印方面的功能开发。其实很简单,因为windows对打印支持的非常好,不管是针式打印机、还是激光打印机,对于我们程序员来说没有区别,只要安装好打印机驱动就可以了,然后,我们可以通过GDI/GDI+接口,让打印机打印输出,比如打印输出一行文本、打印一张图片等等,这些跟我们在屏幕上调用GDI/GDI+接口来绘制文本、显示图片没有区别,只不过底层的输出设备,从显卡变成了打印机而已。

例如,我们比较一下在屏幕上显示图片和用打印机打印图片:

屏幕显示图片
所谓屏幕显示,其实也就是显示在某个窗口上,一般来说,我们在窗口的绘图消息中处理,这样当窗口最小化恢复后,仍然可以显示图片。

        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.DrawImage(image, 0,  0);
        }

打印机打印图片
这里就不详细介绍C#实现打印功能了,简单说下,C#提供了一个叫着PrintDocument的打印组件(在工具箱里面可以添加),然后响应PrintPage事件:

private void pd1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
	Graphics g = e.Graphics;
	g.DrawImage(image, 0,  0);
}

从上面的对比可以看出,在屏幕上显示一张图片和用打印机打印出一张图片,代码是一样的,唯一的区别就是Graphics对象不同,一个是显卡的Graphics,一个是打印机的Graphics。也就是说,上层接口都是一样,都是GDI/GDI+接口,下层不同的驱动,实现不同的功能:显卡驱动将图片显示在屏幕上;打印机驱动将图片打印出来。

当然了,虽然说在屏幕上显示和打印输出,都是调用同样的API,还是有很多不同的,毕竟屏幕和打印机是两种不同的输出设备,尤其是分辨率有很大不同,屏幕的分辨率要比打印机的分辨率低很多,所以,一张图片,在屏幕上看起来大小适中,但是打印出来就会让你失望,因为打印出来显得很小。所以,如果你的程序不仅仅要在屏幕上显示内容,也要具备打印的功能,那么就要考虑屏幕和打印机分辨率不同这个因素,做好尺寸和位置的转换,这样才能实现”所见即所得“的功能。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值