最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Unity調(diào)用打印機(jī)打印圖片

 更新時(shí)間:2019年10月16日 14:28:09   作者:月夜風(fēng)雨磊  
這篇文章主要為大家詳細(xì)介紹了Unity通過調(diào)用打印機(jī)打印圖片的代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Unity打印機(jī)打印圖片的具體代碼,供大家參考,具體內(nèi)容如下

1、調(diào)用打印機(jī)首先就是要配置好打印機(jī)

就是電腦跟打印機(jī)已經(jīng)連接好,有默認(rèn)的打印機(jī)可以啟動(dòng)使用

2、調(diào)用方式

(1)使用外部第三方軟件exe

代碼如下:(就兩句)

string path = Application.dataPath + @"\Textures\002.png";
  System.Diagnostics.Process.Start("mspaint.exe", path);//調(diào)用第三方應(yīng)用去打印(其中path是要打印圖片的路徑,而mspaint.exe是調(diào)用Windows中的畫板,然后從畫板里啟用打印功能) 

(2)使用win自帶軟件

這個(gè)需要下載一個(gè)應(yīng)用(應(yīng)用會放在我的博客下載文件中名字是PrintImage.exe)
然后直接上代碼:

public void Test()
  {
    string path = Application.dataPath + @"\Textures\002.png,0,0,750,400";//從紙張的0. 0點(diǎn),將圖像調(diào)整為750×350點(diǎn)(計(jì)算:150mm/28.346 px/cm=529點(diǎn),100mm/28.346 pm/cm=352點(diǎn)) 圖片路徑
    string exepath = Application.streamingAssetsPath + @"\PrintImage.exe";//這個(gè)是需要下載的應(yīng)用直接放到電腦上就行(調(diào)用打印機(jī)打印圖片應(yīng)用的路徑)
    ProcessStartInfo info = new ProcessStartInfo(exepath);//指定啟動(dòng)進(jìn)程時(shí)使用的一組值
    info.Arguments = path;//獲取或設(shè)置啟動(dòng)應(yīng)用程序時(shí)要使用的一組命令行自變量
    using (Process p=new Process())
    {
      p.StartInfo = info;
      p.Start();
    }
  }

(3)自己進(jìn)行打印

/// <summary>
  /// 打印
  /// </summary>
  public void PrintFile()
  {
    PrintDocument pri = new PrintDocument();
    pri.PrintPage += Printpagetest;
    pri.Print();
  }

  private void Printpagetest(object sender, PrintPageEventArgs e)
  {
    try
    {
      System.Drawing.Image image = System.Drawing.Image.FromFile(printPath);
      System.Drawing.Graphics g = e.Graphics;
      g.TranslateTransform(_4AHeight, 0);
      g.RotateTransform(90);
      g.DrawImage(image, 0, 0, _4AWidth, _4AHeight);
    }
    catch (Exception ee)
    {
      Debug.LogError(ee.Message);
    }
  }

(這里的第三種我還未進(jìn)行測試,如出現(xiàn)錯(cuò)誤無法實(shí)現(xiàn)請指正)

這里我選擇的是第二種,1不好實(shí)現(xiàn)靜默,3太麻煩,2使用是后臺調(diào)用命令行

3、顏色問題

同時(shí)這里本人還找到了有博主自己寫的調(diào)用打印機(jī)方法
項(xiàng)目中需要用到調(diào)用打印機(jī)打印圖片,原本覺得會很復(fù)雜,結(jié)果一搜索發(fā)現(xiàn)Assetstore有相應(yīng)的插件。在網(wǎng)上找到別人分享的插件,完美的實(shí)現(xiàn)了功能,所以現(xiàn)在也來分享一下(因?yàn)橄肟吹骄唧w實(shí)現(xiàn),所以用工具反編譯了DLL,原本插件是直接導(dǎo)入就可以的)。

using System;
using System.Diagnostics;
using System.Drawing.Printing;
using System.IO;
using UnityEngine;

namespace LCPrinter
{
  public static class Print
  {
    public static void PrintTexture(byte[] texture2DBytes, int numCopies, string printerName)
    {
      if (texture2DBytes == null)
      {
        UnityEngine.Debug.LogWarning("LCPrinter: Texture is empty.");
        return;
      }
      PrinterSettings printerSettings = new PrinterSettings();
      if (printerName == null || printerName.Equals(""))
      {
        printerName = printerSettings.PrinterName;
        UnityEngine.Debug.Log("LCPrinter: Printing to default printer (" + printerName + ").");
      }
      string str = string.Concat(new string[]
      {
        DateTime.Now.Year.ToString(),
        "-",
        DateTime.Now.Month.ToString(),
        "-",
        DateTime.Now.Day.ToString(),
        "-",
        DateTime.Now.Hour.ToString(),
        "-",
        DateTime.Now.Minute.ToString(),
        "-",
        DateTime.Now.Second.ToString(),
        "-",
        DateTime.Now.Millisecond.ToString()
      });
      string text = (Application.persistentDataPath + "\\LCPrinterFiletmp_" + str + ".png").Replace("/", "\\");
      UnityEngine.Debug.Log("LCPrinter: Temporary Path - " + text);
      File.WriteAllBytes(text, texture2DBytes);
      Print.PrintCMD(text, numCopies, printerName);
    }

    public static void PrintTextureByPath(string path, int numCopies, string printerName)
    {
      PrinterSettings printerSettings = new PrinterSettings();
      if (printerName == null || printerName.Equals(""))
      {
        printerName = printerSettings.PrinterName;
        UnityEngine.Debug.Log("LCPrinter: Printing to default printer (" + printerName + ").");
      }
      Print.PrintCMD(path, numCopies, printerName);
    }

    private static void PrintCMD(string path, int numCopies, string printerName)
    {
      Process process = new Process();
      try
      {
        for (int i = 0; i < numCopies; i++)
        {
          process.StartInfo.FileName = "rundll32";
          process.StartInfo.Arguments = string.Concat(new string[]
          {
            "C:\\WINDOWS\\system32\\shimgvw.dll,ImageView_PrintTo \"",
            path,
            "\" \"",
            printerName,
            "\""
          });
          process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
          process.StartInfo.UseShellExecute = true;
          process.Start();
        }
      }
      catch (Exception arg)
      {
        UnityEngine.Debug.LogWarning("LCPrinter: " + arg);
      }
      finally
      {
        process.Close();
        UnityEngine.Debug.Log("LCPrinter: Texture printing.");
      }
    }
  }
}

這是實(shí)現(xiàn)功能的源碼。調(diào)用方法如下:

using UnityEngine;
using System.Collections;
using System.Diagnostics;
using System;
using System.IO;
using LCPrinter;
using UnityEngine.UI;

public class LCExampleScript : MonoBehaviour {

  public Texture2D texture2D;
  public string printerName = "";
  public int copies = 1;

  public InputField inputField;

  public void printSmileButton()
  {
    Print.PrintTexture(texture2D.EncodeToPNG(), copies, printerName);//打印一張編輯器中的圖片
  }

  public void printByPathButton()
  {
    Print.PrintTextureByPath("D:\\pic.png", copies, printerName);//打印一張存在指定路徑的圖片
  }
}

由于原本插件是添加好引用的,反編譯之后缺少了引用,所以要去統(tǒng)一的安裝路徑E:\ unity5.3.2 \統(tǒng)一\編輯\數(shù)據(jù)\單聲道\ lib中\(zhòng)單\ 2.0(這是我本地安裝的路徑)中找到System.Drawing.dll程序程序放入項(xiàng)目中的插件下。如在VS中報(bào)錯(cuò)沒有添加引用,則要對項(xiàng)目添加引用

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • c#多種加解密示例(md5加密解密)

    c#多種加解密示例(md5加密解密)

    這篇文章主要介紹了c#多種加解密示例,包括了MD5加密,SHA1加密,DES加解密,需要的朋友可以參考下
    2014-03-03
  • C#實(shí)現(xiàn)計(jì)算器精簡版

    C#實(shí)現(xiàn)計(jì)算器精簡版

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)計(jì)算器精簡版,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C#實(shí)現(xiàn)自定義ListBox背景的示例詳解

    C#實(shí)現(xiàn)自定義ListBox背景的示例詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用C#實(shí)現(xiàn)自定義ListBox背景,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#使用Thrift作為RPC框架入門詳細(xì)教程

    C#使用Thrift作為RPC框架入門詳細(xì)教程

    這篇文件我們講了從0到1使用thrift框架的方法,也講了一些該框架的基本知識,本文將詳細(xì)介紹 Thrift 在C#語言下的使用方式,并且提供豐富的實(shí)例代碼加以解釋說明,幫助使用者快速構(gòu)建服務(wù),感興趣的朋友一起看看吧
    2021-11-11
  • C#獲取電腦硬件CPU信息的示例代碼

    C#獲取電腦硬件CPU信息的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C#獲取電腦硬件之CPU信息,以及它都有那些品牌,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)C#有一定的幫助,感興趣的小伙伴可以了解一下
    2024-01-01
  • Unity實(shí)現(xiàn)模型點(diǎn)擊事件的方法

    Unity實(shí)現(xiàn)模型點(diǎn)擊事件的方法

    這篇文章主要介紹了Unity實(shí)現(xiàn)模型點(diǎn)擊事件的方法,本文通過多種方法給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • c#異步操作后臺運(yùn)行(backgroundworker類)示例

    c#異步操作后臺運(yùn)行(backgroundworker類)示例

    這篇文章主要介紹了c#異步操作后臺運(yùn)行(backgroundworker類)示例,需要的朋友可以參考下
    2014-04-04
  • C#基礎(chǔ)之異步調(diào)用實(shí)例教程

    C#基礎(chǔ)之異步調(diào)用實(shí)例教程

    這篇文章主要介紹了C#中的異步調(diào)用,對比同步調(diào)用分析了異步調(diào)用的原理及特點(diǎn),并以實(shí)例形式給出了實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-09-09
  • C#中異步Socket通信編程代碼實(shí)例

    C#中異步Socket通信編程代碼實(shí)例

    這篇文章主要介紹了C#中異步Socket通信編程代碼實(shí)例,本文講解了什么是Socket編程的異步是實(shí)現(xiàn)、如何實(shí)現(xiàn)Socket異步通信并給出了代碼實(shí)例,需要的朋友可以參考下
    2015-03-03
  • C# WinForm快捷鍵設(shè)置技巧

    C# WinForm快捷鍵設(shè)置技巧

    這篇文章主要給大家介紹C# winform快捷鍵設(shè)置技巧,涉及到C winform快捷鍵相關(guān)知識,對C winform知識感興趣的朋友可以參考下本篇文章
    2015-10-10

最新評論

固安县| 阿城市| 南城县| 武安市| 黑龙江省| 阳西县| 蕲春县| 长泰县| 宜兰市| 施秉县| 额尔古纳市| 琼结县| 千阳县| 南皮县| 民县| 丽江市| 卓资县| 上饶县| 江永县| 安仁县| 托克逊县| 苏州市| 桦甸市| 清丰县| 蚌埠市| 巴彦县| 神木县| 修文县| 定安县| 广水市| 喀什市| 两当县| 汶上县| 镇安县| 曲周县| 长沙市| 民勤县| 东台市| 盐亭县| 浮山县| 阳江市|