본문 바로가기

프로그램/유니티 스크립트 소스

[유니티 스크립트 소스] 화면 캡처 및 프린트(Windows)

728x90
반응형

1. 소스

1.1 화면 캡처

 

화면 캡처 메서드는 캡처 후 저장 할 디렉토리가 존재하지 않으면,

생성 후 접두어 + 연도일시간 형태의 파일로 저장 되는 메서드입니다.

 

네임스페이스
using System; 
using System.IO;

 

메서드 :  화면 캡처
void Capture(string filePath, string filePrefix = "")
{
    // ① 캡처 후 저장 할 디렉토리가 존재하지 않으면 디렉토리 생성
    DirectoryInfo directoryInfo = new DirectoryInfo(filePath);

    if (!directoryInfo.Exists)
    {
        directoryInfo.Create();
    }

    // ② 캡처
    string savedFilePath = filePath+ filePrefix + DateTime.Now.ToString("yyyyMMdd hhmmss") + ".png";
    ScreenCapture.CaptureScreenshot(savedFilePath );
}

 

 

1.2 프린트

 

프린트 메서드는 파일이 존재하는지 확인 후 윈도우의 그림판 기능을 활용하여 프린트를 하는 메서드입니다.

여기서 주의 할 점은 프린트 패스와 파일명 안에 공백이 있으면, mspaint.exe 실행문에서 인식을 제대로 못하는 문제점이 있습니다.

캡처 디렉토리 및 파일명에 공백을 없애고 만들기 바랍니다.

 

네임스페이스
using System.IO;
using System.Diagnostics;

 

메서드 :  프린트
void Print(string filePath)
{
    // ① 프린트 할 파일 확인
    FileInfo fileInfo = new FileInfo(filePath);

    if (fileInfo.Exists)
    {
        Process.Start("mspaint.exe", "/pt " + filePath); // ② 그림판 기능을 사용하여 프린트. filePath에 공백이 없어야 함.
    }
}

 

 

2. 데모

F11키를 누르면 캡처가 되고, F12키를 누르면 프린트가 됩니다.

캡처를 하지 않고 프린트를 하면, 프린트가 되지 않습니다.

using UnityEngine; 
using System; 
using System.IO; 
using System.Diagnostics; 

public class DemoCaptureAndPrint : MonoBehaviour 
{ 
    public string m_ScreenCapturePath = @"D:\Capture\Images\"; // 디렉토리 이름과 파일 이름에 빈칸 없이 생성 
    public string m_ScreenCaptureFilePrefix = "CoderZero"; // 디렉토리 이름과 파일 이름에 빈칸 없이 생성 
    private string m_ScreenCaptureFilePath; 

    void Update() 
    { 
        // 캡처 후 저장 
        if (Input.GetKeyDown(KeyCode.F11)) 
        { 
            Capture(m_ScreenCapturePath, m_ScreenCaptureFilePrefix); 
        } 

        // 프린트 
        if (Input.GetKeyDown(KeyCode.F12)) 
        { 
            Print(m_ScreenCaptureFilePath); 
        } 
    } 

    void Capture(string filePath, string filePrefix = "") 
    { 
        // ① 캡처 후 저장 할 디렉토리가 존재하지 않으면 디렉토리 생성 
        DirectoryInfo directoryInfo = new DirectoryInfo(filePath); 

        if (!directoryInfo.Exists) 
        { 
            directoryInfo.Create(); 
        } 

        // ② 캡처 
        m_ScreenCaptureFilePath= filePath+ filePrefix + DateTime.Now.ToString("yyyyMMddhhmmss") + ".png"; 
        ScreenCapture.CaptureScreenshot(m_ScreenCaptureFilePath); 
    } 

    void Print(string filePath) 
    { 
        // ① 프린트 할 파일 확인 
        FileInfo fileInfo = new FileInfo(filePath); 

        if (fileInfo.Exists) 
        { 
            Process.Start("mspaint.exe", "/pt " + filePath); // ② 그림판 기능을 사용하여 프린트 
        } 
    } 
}

 

3. 결과

 

코더제로 유니티 스크립트 소스 화면 캡처 및 프린트(Windows)
그림. 캡처 및 프린트(Windows)

 

728x90
반응형