Microsoft MVP성태의 닷넷 이야기
Graphics: 37. C# - PLplot - 출력 모음(Family File Output) [링크 복사], [링크+제목 복사],
조회: 17973
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

C# - PLplot - 출력 모음(Family File Output)

PLplot은 "begin of page"와 "end of page" 사이에 drawing을 하게 됩니다.

{
    pl.bop();

    // ... drawing

    pl.eop();
}

그런데 bop, eop를 연속으로 호출하면,

{
    pl.bop();

    // ... drawing

    pl.eop();
}

{
    pl.bop();

    // ... drawing

    pl.eop();
}

다음과 같은 식의 오류가 발생합니다.

*** PLPLOT WARNING ***
All pages after the first skipped because family file output not specified.

즉, PLplot은 page를 하나의 canvas로 다루는데 기본적으로는 Page가 하나밖에 주어지지 않으므로 두 번째의 bop 호출에서 실패하는 것입니다. 그렇다면 다중 페이지를 어떻게 제공할 수 있을까요? 이에 대해서는 PLplot 문서에 찾아볼 수 있습니다.

Chapter 3. Advanced Use of PLplot - Family File Output
; http://www.ccp4.ac.uk/dist/checkout/plplot-5.11.0/doc/docbook/src/output-devices.html#familying

그러니까, 페이지 제공 개념이 그냥 단순히 파일 출력에 대한 번호를 설정하는 식입니다. 코드로 보면, 파일 명에 번호가 출력할 수 있는 여지를 주고,

using (var pl = new PLStream())
{
    pl.sdev("png");
    pl.sfnam("image%n.png");
}

제공할 페이지 수를 지정하는데, 반드시 init 호출 이전에 해야 합니다.

using (var pl = new PLStream())
{
    pl.sdev("png");
    pl.sfnam("image%n.png");

    pl.sfam(1, 1, 2); // 첫 번째 인자 - family output enable
                      // 두 번째 인자 - 첫 번째 페이지의 번호
                      // 세 번째 인자 - 마지막 페이지의 번호
    pl.init();
}

이후, bop/eop를 두 번 하게 되면 각각의 페이지 출력에 대해 image1.png, image2.png가 됩니다. 대충 감이 오시죠? ^^

(이 글의 예제 코드는 github - PLplotGridmap에서 제공합니다.)




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 6/27/2019]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... [136]  137  138  139  140  141  142  143  144  145  146  147  148  149  150  ...
NoWriterDateCnt.TitleFile(s)
1655정성태3/19/201423229Windows: 92. Thumbs.db 파일이 삭제 안 되는 문제
1654정성태3/19/201425317개발 환경 구성: 219. SOS.dll 확장 모듈을 버전 별로 구하는 방법 [4]
1653정성태3/13/201420148.NET Framework: 428. .NET Reflection으로 다차원/Jagged 배열을 구분하는 방법
1652정성태3/12/201421217VC++: 76. Direct Show를 사용하는 다른 프로그램의 필터 그래프를 graphedt.exe에서 확인하는 방법파일 다운로드1
1651정성태3/11/201424872.NET Framework: 427. C# 컴파일러는 변수를 초기화시키지 않을까요?
1650정성태3/6/201425641VC++: 75. Visual C++ 컴파일 오류 - Cannot use __try in functions that require object unwinding [1]파일 다운로드1
1649정성태3/5/201420315기타: 44. BTN 스토어 앱 개인정보 보호 정책 안내
1648정성태3/5/201420675개발 환경 구성: 218. 스토어 앱 인증 실패 - no privacy statement
1647정성태3/3/201421958오류 유형: 224. 스카이드라이브 비정상 종료 - Error 0x80040A41: No error description available
1646정성태3/3/201431184오류 유형: 223. Microsoft-Windows-DistributedCOM 10016 이벤트 로그 에러 [1]
1645정성태3/1/201420925기타: 43. 마이크로소프트 MVP들이 모여 전국 세미나를 엽니다.
1644정성태2/26/201427876.NET Framework: 426. m3u8 스트리밍 파일을 윈도우 8.1 Store App에서 재생하는 방법파일 다운로드1
1643정성태2/25/201423719오류 유형: 222. 윈도우 8 Store App - APPX1204 SignTool Error: An unexpected internal error has occurred [1]
1642정성태2/25/201428312Windows: 91. 한글이 포함된 사용자 프로파일 경로 변경 [2]
1641정성태2/24/201425134기타: 42. 클래스 설명 [5]
1640정성태2/24/201446091.NET Framework: 425. C# - VLC(ActiveX) 컨트롤을 레지스트리 등록 없이 사용하는 방법 [15]
1639정성태2/23/201421813기타: 41. BBS 스토어 앱 개인정보 보호 정책 안내
1638정성태2/18/201444487Windows: 90. 실행 파일로부터 관리자 요구 권한을 제거하는 방법(부제: 크랙 버전을 보다 안전하게 실행하는 방법) [8]
1637정성태2/14/201425646Windows: 89. 컴퓨터를 껐는데도 어느 순간 자동으로 켜진다면? - 두 번째 이야기
1636정성태2/14/201421503Windows: 88. Hyper-V가 설치된 컴퓨터의 윈도우 백업 설정
1635정성태2/14/201422472오류 유형: 221. SharePoint - System.InvalidOperationException: The farm is unavailable.
1634정성태2/14/201422654.NET Framework: 424. C# - CSharpCodeProvider로 컴파일한 메서드의 실행이 일반 메서드보다 더 빠르다? [1]파일 다운로드1
1633정성태2/13/201425566오류 유형: 220. 2014년 2월 13일 이후로 Visual Studio 2010 Macro가 동작하지 않는다면? [3]
1632정성태2/12/201443489.NET Framework: 423. C#에서 DirectShow를 이용한 미디어 재생 [2]파일 다운로드1
1631정성태2/11/201422503개발 환경 구성: 217. Realtek 사운드 장치에서 재생되는 오디오를 GraphEditor로 녹음하는 방법
1630정성태2/5/201422820개발 환경 구성: 216. Hyper-V에 올려진 윈도우 XP VM에서 24bit 컬러 및 ClearType 활성화하는 방법
... [136]  137  138  139  140  141  142  143  144  145  146  147  148  149  150  ...