2010.01.20 09:00

1.RichTextArea Part 1
2.RichTextArea Part 2
3.Accessing Web Camera and Microphone
4.Right Click Mouse Events
5.MouseWheel API
6.Using Silverlight Controls As Drop Targets
7.DataGrid Enhancements
8.Printing API Basics
9.Hosting HTML Content
10.Accessing the Global Clipboard Programmatically 
11.Using the ViewBox Control 
12.Asynchronous Data Validation 
13.BiDi and Right-to-Left Support 
14.Notification API
15.Local File Access 
16.RIA Services support in Visual Studio 2010 

블로그 이미지 김영욱 차장 Microsoft Korea  .NET Evangelist
Enterprise UX 를 위한  UI 기술과 SOA, Cloud Computing, NUI등 다양한 분야의 접목과 응용을 통해 최적의 IT 인프라 구축을 위해서 노력하고 있다.
Email: iwinkey@hotmail.com
Blog: http://winkey.tistory.com

 

웹에서 프린트를 마음 것 할 수 있다면 어떨까? 여러 가지로 편리한 점 들이 많이 있을 것이다. 일반적인 웹 페이지의 경우 레이아웃 자체가 가변적이기 때문에 기본적으로 정해져 있는 모양대로 프린트 되지 못합니다. 그래서 미리 보기를 적절히 사용해 가면서 결과물을 미리 확인하지 않았다가는 엄청난 양의 종이를 낭비하게 됩니다.

 

Silverlight 4에서는 드디어 프린트 기능이 지원됩니다. 시스템에 설치되어 있는 프린트의 목록을 가져오고 가져온 목록을 기반으로 해서 프린트를 선택해서 프린트 할 수 있습니다.

 

<그림1> 프린트 기능을 보여주는 샘플 프로그램

 

프린트 기능을 사용하는 방법은 의외로 심플합니다. 프린트를 사용하는 방법은
System.Windows.Printing.PrintDocument 클래스를 사용하면 됩니다.

 

PrintDocument docToPrint = new PrintDocument();
docToPrint.DocumentName = "Entire Screen Sample";

 

docToPrint.PrintPage += (s, args) =>
    {
        args.PageVisual = this.StackOfStuff;
    };

 

docToPrint.Print();

<소스1>프린트 기능의 사용 예

 

ProntDoucment 클래스의 PrintPage에서 PageVisual 속성에 출력하려고 하는 객체를 지정하고 Print( );를 호출하는 것으로 바로 프린트가 이루어 집니다.

 

<그림2>프린터 선택 화면

 

약간의 기교를 부린다면 프린팅을 시작할 때 혹은 프린팅이 종료 되었을 때 무언가 사용자에게 보여주는 방식으로 코딩하고 싶으면 다음과 같이 StartPrint와 EndPrint 두 개를 잘 활용 할 수 있습니다.

 

PrintDocument docToPrint = new PrintDocument();
docToPrint.DocumentName = "Entire Screen Sample";

docToPrint.StartPrint += (s, args) =>
    {
        ActivityDisplay.IsActive = true;
    };

docToPrint.PrintPage += (s, args) =>
    {
        args.PageVisual = this.StackOfStuff;
    };

docToPrint.EndPrint += (s, args) =>
    {
        ActivityDisplay.IsActive = false;
    };

docToPrint.Print();

<소스2> 시작과 종료를 활용하는 예

 

이외에도 동적으로 객체들을 쌓아서 출력하는 방식도 사용할 수 있는데 이는 첨부된 샘플을 잘 살펴보시면 될 것 같습니다.

신고