2010. 1. 20. 12:00

Silverlight Mobile에 대한 연기가 모락 모락 올라 옵니다. 조만간 뭔가 나오긴 하려나 봅니다.

자세한 내용은 아래의 주소에서 보실 수 있습니다.

 

http://silverlight.net/learn/mobile/

2010. 1. 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> 시작과 종료를 활용하는 예

 

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

  • 순대국밥 2010.06.24 15:58

    음. 실버라이트 내의 컨트롤 말고 특정 HTML 또는 웹페이지는 인쇄할 수 없나요?

    • winkey 2010.06.28 09:29 신고

      그냥 웹 페이지의 출력을 실버라이트가 제어할 수는 없습니다.
      또 다른 방법은 Silverlight내에 있는 HTML 컨트롤을 사용하는 방법이 있지만 이 방법은 Out of browser 일때만 사용 가능합니다.

  • 고기먹고파 2011.10.05 16:10

    실버라이트에서 프린트 기능을 사용할 때, Print Dialog Box가 자동으로 나오는데 이것을 안 보이게 할 수는 없는 걸까요?^^

    • winkey 2011.10.06 08:36 신고

      안타깝게도.. 프린트, 클립보드, 파일 시스템 등등은 모두 로컬 시스템 자원이므로 조용히 접근하게 하면 보안 이슈가 커지기 때문에 아직 경고 없이 사용할 수 있는 방법은 따로 제공되지 않습니다.