Unity简单实现调用电脑打印机打印图片功能
前言
因为我自己工作方面的原因,在实际的项目中开发过使用调用电脑打印机打印Unity程序中保存的图片的功能。我已经很久没有使用过这个功能了,但是今天忽然让测试下这个功能。于是很费劲地翻出以前的项目,实现了这一功能。很痛恨自己懒散,没有及时记录,今天加加班也要把这个记录到博客上哈哈。以下是实现步骤。
实现步骤
1.新建项目,在项目中新建一个名称为Plugins的文件夹,将System.Drawing.dll和User32.dll文件放进这个文件夹中,如下图所示:
2.在项目中新建StreamingAssets文件夹,将一张图片放入此文件夹中,如下图所示:
3.开发打印Paint.cs脚本,此脚本的作用是开发打印基本功能,脚本开发完成后挂载到场景中,脚本代码如下所示:
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using UnityEngine;
using System.IO;
using UnityEngine.SceneManagement;
using System;
public class Print : MonoBehaviour
{
/// <summary>坐标X,Y</summary>
private int coordinateX, coordinateY;
/// <summary>图片的宽度和高度</summary>
private int width, height;
/// <summary>位图实例化</summary>
private Bitmap bitmap;
private System.Drawing.Printing.PrintDocument printDocument1;
void Start()
{
coordinateX = 0;
coordinateY = 0;
width = 100;
height = 100;
this.printDocument1 = new System.Drawing.Printing.PrintDocument();
}
/// <summary>
/// 设置打印信息
/// </summary>
private void SetPrintInfo()
{
this.printDocument1.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.printDocument1_PrintPage);
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(bitmap, coordinateX, coordinateY, width, height);
}
/// <summary>
/// 开始打印列表
/// </summary>
public void StartPrintList(string path)
{
bitmap = new Bitmap(path);//根目录
SetPrintInfo();
printDocument1.Print();
//currentFile = null;
}
}
4.开发调用打印功能脚本,开发完成后挂载到场景中的物体上,脚本代码如下所示:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ToDaYin : MonoBehaviour
{
/// <summary>
/// 文件名称
/// </summary>
public string pathName;
//打印逻辑
public Print print;
// Use this for initialization
void Start ()
{
pathName = Application.streamingAssetsPath + "/0.png";
Debug.Log(pathName);
}
/// <summary>
/// 打印
/// </summary>
public void ToDaYinThis()
{
print.StartPrintList(pathName);
}
5.在场景中新建一个Button,将ToDaYinThis方法赋值到该button上,如下图所示:
6.打印效果如下所示,哈哈。因为打印了一张白色图片,所以什么也没有打印出来: