검색결과 리스트
WPF에 해당되는 글 40건
- 2008/09/15 모니터 해상도(Tip)
- 2008/08/24 Aero Glass(에어로 글래스) 사용하기 (2)
- 2008/08/07 Flash Movie 실행하기
- 2008/07/21 ActiveX 컨트롤 사용하기
- 2008/07/14 윈폼(Winform) 컨트롤 사용하기
- 2008/01/17 News Reader SDK 공개
- 2008/01/08 Color와 Colors 구조체를 객체 생성 및 색 지정
- 2008/01/08 클래스를 상속받아 윈도우 응용 프로그램 구현하기
- 2008/01/05 화면에서 윈도우 크기와 위치 지정
- 2007/12/21 Application의 window 제어하기
- 2007/12/14 이벤트 안에서 현재의 윈도우 객체 구하기
- 2007/12/13 응용프로그램 Application 클래스 이벤트 처리
- 2007/12/12 클래스 계층 구조
- 2007/08/10 [XPS] Fxied Documents
- 2007/08/10 [XPS] View and Generate XPS
글
모니터 해상도(Tip)
WPF에서 모니터의 실제 해상도를 가져오는 간단한 프로그램입니다.
xaml code
cs code
'WPF' 카테고리의 다른 글
| 모니터 해상도(Tip) (0) | 2008/09/15 |
|---|---|
| Aero Glass(에어로 글래스) 사용하기 (2) | 2008/08/24 |
| Flash Movie 실행하기 (0) | 2008/08/07 |
| ActiveX 컨트롤 사용하기 (0) | 2008/07/21 |
| 윈폼(Winform) 컨트롤 사용하기 (0) | 2008/07/14 |
| News Reader SDK 공개 (0) | 2008/01/17 |
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
글
Aero Glass(에어로 글래스) 사용하기
WPF에서 에어로 글래스를 사용하기 위해서는 DwmExtendFrameIntoclientAero API를 호출해야 합니다.
윈도우의 투명색은 다른 여러가지 색으로도 변경이 가능하며 무채색으로도 효과를 줄 수 있습니다. DeskTop Window Manager 사용하기 위해서는 PInvoke(Platform Invoke)를 사용해야 합니다. WPF에 관리되지 않는 코드이기 때문에 Win32의 API를 호출해야 합니다.
네임스페이스에 Win32 API를 호출하기 위한 네임스페이스를 선언합니다.
C#에서 Win32 Api 호출
xaml code
AeroGrassHelper
window.Background = Brushes.Transparent;
위의 코드는 WPF와 Win32 모두 투명한 배경으로 설정합니다.
AeroGlassHalper 클래스의 ExtendGlassFrame메소드는 윈도우의 크기를 확장할때 그 크기에 맞추어 에어로 글래스 효과를 줄지 결정하는 역활을 합니다. 윈도우의 모든 영역을 투명창으로 하려면 -1를 넘겨줍니다. 인수타입은 Thickness 입니다.
오버라이드 된 OnContentRendered 이벤트에서 base.OnContentRendered(e);를 계속 호출하는 것은 윈도우가 랜더링 될때마다 윈도우의 전체영역에서 투명효과를 주기위해서 입니다.
저의 노트북 바탕화면을 실버라이트 심벌로 해놨습니다.^^ 그 위에 WPF 윈도우창이 에어로 글래스 효과를 주어 반투명창 효과가 나타났고 그 뒤에 윈도우의 배경화면이 보입니다.,
참고 사이트 및 도서
에덤네이선의 WPF 언리쉬드(참고도서)
※ AeroGrassHelper 의 원본코드의 저작권은 에덤네이선(Adam Nathan)에게 있음을 알려드립니다.
'WPF' 카테고리의 다른 글
| 모니터 해상도(Tip) (0) | 2008/09/15 |
|---|---|
| Aero Glass(에어로 글래스) 사용하기 (2) | 2008/08/24 |
| Flash Movie 실행하기 (0) | 2008/08/07 |
| ActiveX 컨트롤 사용하기 (0) | 2008/07/21 |
| 윈폼(Winform) 컨트롤 사용하기 (0) | 2008/07/14 |
| News Reader SDK 공개 (0) | 2008/01/17 |
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
글
Flash Movie 실행하기
AxInterop.ShockwaveFlashObjects.dll이 추가되었습니다.
로컬에 있는 Flash Movie를 가져와 WPF에서 재생을 합니다.
xaml code
cs code
코드 설명
Summary
'WPF' 카테고리의 다른 글
| 모니터 해상도(Tip) (0) | 2008/09/15 |
|---|---|
| Aero Glass(에어로 글래스) 사용하기 (2) | 2008/08/24 |
| Flash Movie 실행하기 (0) | 2008/08/07 |
| ActiveX 컨트롤 사용하기 (0) | 2008/07/21 |
| 윈폼(Winform) 컨트롤 사용하기 (0) | 2008/07/14 |
| News Reader SDK 공개 (0) | 2008/01/17 |
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
글
ActiveX 컨트롤 사용하기
WPF From 내부안에 긍즉적으로 다른 윈도우가 종속족으로 퐇마될 수 없습니다. 그러나 이를 가능하게 해주는 클래스가 지난 강좌(WPF에서 윈폼 컨트롤 클래스 사용히기)에서 다루었던 ElementClass입니다. Element 클래스를 이용하여 ActiveX를 컨트롤할 수 있는데요
ActiveX 컨트롤 추가하는 방법
1. ActiveX Importer(AXIMP.EXE)를 실행
(이 유틸리티는 윈도우즈 SDK의 닷넷컴퍼넌트에 포함되어 있습니다.)
2. Visual Studio에서 윈폼 프로젝트를 만든다음 [도구상자]-[항목선택]을 한다음 [도구상자선택항목]의 [COM 구성요소]템에 있는 ActiveX를 선택하여 도구상자에 추가한다음 이 컨트롤을 윈폼에 마우스로 드레그하여 추가하는 방법(추가하면 윈폼에서 자동으로 실행됩니다.)
이 강좌에서는 2번째 방법을 택하여 ActiveX를 추가해보겠습니다.
윈도우 미디어 플레이어 ActiveX를 추가하였습니다.
xaml Code
코드설명은 ActiveX 부분만 간단히 설명하겠습니다.
위 코드는 윈도우 미디어 플레이어 ActiveX를 사용하기 위해 추가된 dll을 인스턴스 생성하는 부분입니다.
Summary
참고 사이트
'WPF' 카테고리의 다른 글
| 모니터 해상도(Tip) (0) | 2008/09/15 |
|---|---|
| Aero Glass(에어로 글래스) 사용하기 (2) | 2008/08/24 |
| Flash Movie 실행하기 (0) | 2008/08/07 |
| ActiveX 컨트롤 사용하기 (0) | 2008/07/21 |
| 윈폼(Winform) 컨트롤 사용하기 (0) | 2008/07/14 |
| News Reader SDK 공개 (0) | 2008/01/17 |
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
글
윈폼(Winform) 컨트롤 사용하기
[도구상자]-[항목선택]순으로 메뉴를 열면 [도구상자선택항목] 대화상자에서 ElementHost가 선택되어 있거나 선택하면 [도구상자]에 WindowsFormsHost 컨트롤이 추가된 것을 볼 수 있습니다.
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms.Integration;
namespace WPFWindowsFormsHost
{
/// <summary>
/// Window1.xaml에 대한 상호 작용 논리
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
// WPF Expander Control 생성
Expander expander = new Expander();
expander.Header = "WPF WindowsFormsHost";
// 컨트롤을 생성하고 이를 WindowsFormsHost에 매핑한다.
WindowsFormsHost host = new WindowsFormsHost();
host.Child = new System.Windows.Forms.MonthCalendar();
// Expender Content프로퍼티에 WindowsFormsHost 인스턴스 생성
expander.Content = host;
// Root Element에 Expender을 추가한다.
this.Content = expander;
}
}
}
네임스페이스에 using System.Windows.Forms.Integration를 추가하면 ElementHost 클래스를 인스턴스 할 수 있습니다. ElementHost 클래스에 있는 Child 프로퍼티는 윈폼의 컨트롤을 포함하게 하여 WPF에서 윈폼컨트롤을 보여지게 할 수있습니다.
Child 프로퍼티에 윈폼의 달력 컨트롤을 인스턴스하여 생성하면 화면에 달력이 보여지게 됩니다.
참고사이트 : http://www.danielmoth.com/Blog/2007/10/wpf-and-windows-forms-integration.html
참고도서 : 애덤 네이선의 WPF 언리쉬드
'WPF' 카테고리의 다른 글
| Aero Glass(에어로 글래스) 사용하기 (2) | 2008/08/24 |
|---|---|
| Flash Movie 실행하기 (0) | 2008/08/07 |
| ActiveX 컨트롤 사용하기 (0) | 2008/07/21 |
| 윈폼(Winform) 컨트롤 사용하기 (0) | 2008/07/14 |
| News Reader SDK 공개 (0) | 2008/01/17 |
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
| 화면에서 윈도우 크기와 위치 지정 (0) | 2008/01/05 |
글
News Reader SDK 공개
Introducing the Syndicated Client Experiences Starter Kit & Reader SDK 라는 제목으로 미국마이크로소프트 공식 사이트에 소개되어 있습니다.
URL: http://windowsclient.net/wpf/starter-kits/sce.aspx
NY Times Reader와 Seattle PI Reader 의 원 소스였던, News Reader SDK가 공개되었습니다.
'WPF' 카테고리의 다른 글
| Flash Movie 실행하기 (0) | 2008/08/07 |
|---|---|
| ActiveX 컨트롤 사용하기 (0) | 2008/07/21 |
| 윈폼(Winform) 컨트롤 사용하기 (0) | 2008/07/14 |
| News Reader SDK 공개 (0) | 2008/01/17 |
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
| 화면에서 윈도우 크기와 위치 지정 (0) | 2008/01/05 |
| Application의 window 제어하기 (0) | 2007/12/21 |
글
Color와 Colors 구조체를 객체 생성 및 색 지정
인자 값이 없는 Color 객체 생성
|
Color color = new Color(); color.R = 255;
color.G = 0;
color.B = 0; |
|
Color color = Color.FromRgb(0, 255, 255); |
다음은 알파채널 지정할 수 있는 메소드 사용법입니다. A값 역시 0~255까지 입력 가능하며 데이터타입은 Byte형입니다.
|
Color color = Color.FromArgb(255, 0, 255, 255); |
지금까지 설명한 내용은 Color 구조체에 객체를 생성하여 0~255까지의 Byte 값을 인자값으로 직접 대입하는 방법을 사용하는 경우이며 System.Windows.Media에는 Colors란 이름의 클래스도 있는데, 여기에는 알파벳순으로 지정된 읽기 전용의 141개 정적 프로퍼티가 있습니다. 사용법은 다음구문과 같습니다.
|
Colors color = Colors.YellowGreen; |
|
1) Color color = Color.FromRgb(0, 255, 255); SolidColorBrush brush = new SolidColorBrush(color);
Background = brush;
2) Background = new SolidColorBrush(Color.FromRgb(0, 255, 255));
3) SolidColorBrush brush = new SolidColorBrush(); brush.Color = Color. FromRgb(0, 255, 255); |
다음강좌에는 Gradient를 그릴 때 사용하는 RadialGradientBrush,
참고서적 : 찰스 페졸트의 WPF
'WPF' 카테고리의 다른 글
| 윈폼(Winform) 컨트롤 사용하기 (0) | 2008/07/14 |
|---|---|
| News Reader SDK 공개 (0) | 2008/01/17 |
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
| 화면에서 윈도우 크기와 위치 지정 (0) | 2008/01/05 |
| Application의 window 제어하기 (0) | 2007/12/21 |
| 이벤트 안에서 현재의 윈도우 객체 구하기 (0) | 2007/12/14 |
글
클래스를 상속받아 윈도우 응용 프로그램 구현하기
보통 Application 클래스를 상속받아 윈도우 응용프로그램을 만들 수도 있지만 Window 클래스를 상속받아 윈도우 응용프로그램을 만드는 것도 가능합니다.
Main 함수에서 Application 클래스를 인스턴스 하고 Window 클래스를 상속받은 InheritTheWin 클래스를 새로 생성합니다.
위 구문을 더 간단히 할 수 있는 방법이 있습니다. 구문은 다음과 같습니다. Main 함수안에 위의 코드를 주석처리 하고 아래코드를 삽입하면 됩니다.
new 키워드를 이용하여 Application 객체를 생성하고 Application 클래스에 들어 있는 Run 메소드 안에 Window 클래스를 상속받은 InheritTheWin 클래스를 생성하여 윈도우를 오픈합니다.
기존에 Application 클래스를 상속 받아서 처리할때보다 코드가 아주 쉽고 간편합니다.
참고서적 : 찰스 페졸트의 WPF
'WPF' 카테고리의 다른 글
| 윈폼(Winform) 컨트롤 사용하기 (0) | 2008/07/14 |
|---|---|
| News Reader SDK 공개 (0) | 2008/01/17 |
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
| 화면에서 윈도우 크기와 위치 지정 (0) | 2008/01/05 |
| Application의 window 제어하기 (0) | 2007/12/21 |
| 이벤트 안에서 현재의 윈도우 객체 구하기 (0) | 2007/12/14 |
글
화면에서 윈도우 크기와 위치 지정
윈도우 영역의 작업표시줄을 감안한다면 코드는 다음과 같습니다. SystemParameters.WorkArea 프로퍼티는 Rect 타입의 객체를 반환합니다. 이 타입은 왼쪽 상단의 위치와 크기로써 사각형을 정의하는 구조체입니다.
WorkArea를 감안하여 화면의 중앙에 창을 위치코자 한다면 코드는 다음과 같습니다.
SystemParameters.WorkArea.Top;
'WPF' 카테고리의 다른 글
| News Reader SDK 공개 (0) | 2008/01/17 |
|---|---|
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
| 화면에서 윈도우 크기와 위치 지정 (0) | 2008/01/05 |
| Application의 window 제어하기 (0) | 2007/12/21 |
| 이벤트 안에서 현재의 윈도우 객체 구하기 (0) | 2007/12/14 |
| 응용프로그램 Application 클래스 이벤트 처리 (0) | 2007/12/13 |
| 클래스 계층 구조 (0) | 2007/12/12 |
글
Application의 window 제어하기
위 프로그램에서 첫 번째 중요한 사실은 OnStartup() 이벤트에서 생성된 3개의 창은 이 응용프로그램에서 모두 동등하다는 것입니다. 그 어떤 윈도우라도 클릭하게 되면 선택된 윈도우는 가장 앞에 자리하게 됩니다. 어떤 순서로도 닫을 수 있으며 가장 마지막에 윈도우가 닫히면 프로그램은 종료됩니다.
for 루프 안에 다음 구문을 삽입하면 "Main Window" 란 제목을 가진 윈도우만 남게 됩니다.
그러나 이 같은 경우 "Main Window" 윈도우를 닫을 경우 윈도우 작업표시줄에 있던 항목은 사라지지만 여전히 응용 프로그램은 계속 실행중 입니다. 물론 2개의 다른 창도 그대로 프로세스에 남아있겠지요 ~~~
ShutdownMode 프로퍼티
|
|
OnLastWindowClose |
마지막 윈도우가 닫힐 경우 |
|
OnMainWindowClose |
메인 윈도우를 닫을 경우 | |
|
OnExplicitShutdown |
Shutdown 메소드를 명시적으로 호출할 경우 |
반면 재정의(override) 된 OnStartup 이벤트 안에서는 this 키워드만 붙이면 이벤트 안의 어느곳이든 ShutdownMode 프로퍼티 설정이 가능합니다. (this 키워드는 생략할 수 있으므로 그냥 프로퍼티 이름만 적어도 됩니다.)
이제 메인 윈도우가 닫힐 때만 Run 메소드가 반환되고 프로그램이 종료됩니다. 마지막으로 메인윈도우를 지정하는 구분을 알아보면 다음과 같습니다. 다음 구문을 OnStartup 이벤트의for 루프 안에 추가합니다.
마지막으로 지금까지 추가된 모든 구문을 제거하고 여러 윈도우들에 대한 계층 구조를 만드는 또 다른 방법을 알아보겠습니다. For 루프 안에 다음 구문을 추가합니다. Window 클래스에 정의된 Owner 프로퍼티를 이용하여 메인으로 지정할 윈도우를 지정하는 합니다. Owner은 소유자라는 뜻으로 기본값은 null 이며 나머지 윈도우를 소유하고 제어할 수 있습니다. 소유자 윈도우를 최소화하면 모든 윈도우가 화면에서 사라지고 소유자 윈도우를 닫으면 나머지 모든 윈도우도 자동으로 닫히게 됩니다.
참고서적 : 찰스 페졸트의 WPF
'WPF' 카테고리의 다른 글
| Color와 Colors 구조체를 객체 생성 및 색 지정 (0) | 2008/01/08 |
|---|---|
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
| 화면에서 윈도우 크기와 위치 지정 (0) | 2008/01/05 |
| Application의 window 제어하기 (0) | 2007/12/21 |
| 이벤트 안에서 현재의 윈도우 객체 구하기 (0) | 2007/12/14 |
| 응용프로그램 Application 클래스 이벤트 처리 (0) | 2007/12/13 |
| 클래스 계층 구조 (0) | 2007/12/12 |
| [XPS] Fxied Documents (0) | 2007/08/10 |
글
이벤트 안에서 현재의 윈도우 객체 구하기
WPF 이벤트 안에서 현재의 윈도우 객체 구하기
※ 코드예제는 찰스 페졸트의 WPF에서 참고하였습니다.
이벤트의 얻은 현재의 윈도우 object의 값 sender을 변환하는 방법도 있으나 동일한 Window 객체를 이벤트 핸들러 안에서 구하는 방법도 있습니다.
object 값의 sender를 Window로 변환하는 방법
Main에서 생성된 Window 객체는 정적 필드로 저장돼, 이벤트 핸들러에서 이를 사용할 수 있습니다.
동일한 Window 객체를 이벤트 핸들러 안에서 구하는 방법
Application 클래스의 특정 프로퍼티를 사용해도 되는데 Application에는 Current란 정적 프로퍼티가 있는데, 이 프로퍼티는 프로그램이 생성한 Application 클래스를 반환합니다. 또한 Application은 Window 객체를 반환하는 MainWindow란 이름의 인스턴스 프로퍼티를 갖고 있습니다. 따라서 이벤트 핸들러에서 위와 같은 방법으로 Window 타입의 지역 변수를 할당할 수 있습니다.
이벤트 안에서 현재의 윈도우 객체를 얻을 때 아주 유용한 코드입니다.
※참고 프로퍼티 : 오브젝트가 가지고 있는 속성
참고서적 : 찰스 페졸트의 WPF
'WPF' 카테고리의 다른 글
| 클래스를 상속받아 윈도우 응용 프로그램 구현하기 (0) | 2008/01/08 |
|---|---|
| 화면에서 윈도우 크기와 위치 지정 (0) | 2008/01/05 |
| Application의 window 제어하기 (0) | 2007/12/21 |
| 이벤트 안에서 현재의 윈도우 객체 구하기 (0) | 2007/12/14 |
| 응용프로그램 Application 클래스 이벤트 처리 (0) | 2007/12/13 |
| 클래스 계층 구조 (0) | 2007/12/12 |
| [XPS] Fxied Documents (0) | 2007/08/10 |
| [XPS] View and Generate XPS (0) | 2007/08/10 |
글
응용프로그램 Application 클래스 이벤트 처리
WPF 응용 프로그램에서 Application 클래스의 이벤트들을 처리할 필요가 있다면 해당하는 이벤트에 대한 이벤트 핸들러를 설치해야 하지만, 가장 편리한 방법은 Application 클래스를 상속하는 클래스를 정의하는 방법입니다.
// 처리하는 기본 메소드들을 오버라이딩 할 수 있다.
'WPF' 카테고리의 다른 글
| 화면에서 윈도우 크기와 위치 지정 (0) | 2008/01/05 |
|---|---|
| Application의 window 제어하기 (0) | 2007/12/21 |
| 이벤트 안에서 현재의 윈도우 객체 구하기 (0) | 2007/12/14 |
| 응용프로그램 Application 클래스 이벤트 처리 (0) | 2007/12/13 |
| 클래스 계층 구조 (0) | 2007/12/12 |
| [XPS] Fxied Documents (0) | 2007/08/10 |
| [XPS] View and Generate XPS (0) | 2007/08/10 |
| [Controls] 25. BulletDecorator (0) | 2007/08/10 |
글
WPF 공부를 하시는 모든분들은 위 그림의 계층구조를 계속해서 접하시게 될겁니다. 하나하나 구조를 파악하면서 프로그래밍을 하다보면 WPF 클래스의 계층간 관계나 구조를 자연스럽게 파악하실 수 있을것입니다. 1년전에는 기본 컨트롤 위주로 Markup Language 즉 XAML을 가지고 강좌를 진행했습니다.
조만간에 진행될 WPF 강좌는 XAML과 실제 동적으로 C#코드로도 구현하는 방법을 통하여 WPF 프로그래밍을 하는 방법을 강좌로 통하여 진행해 보도록 하겠습니다.
'WPF' 카테고리의 다른 글
| Application의 window 제어하기 (0) | 2007/12/21 |
|---|---|
| 이벤트 안에서 현재의 윈도우 객체 구하기 (0) | 2007/12/14 |
| 응용프로그램 Application 클래스 이벤트 처리 (0) | 2007/12/13 |
| 클래스 계층 구조 (0) | 2007/12/12 |
| [XPS] Fxied Documents (0) | 2007/08/10 |
| [XPS] View and Generate XPS (0) | 2007/08/10 |
| [Controls] 25. BulletDecorator (0) | 2007/08/10 |
| [3D] STARWARS NABOO (0) | 2007/07/09 |
글
[XPS] Fxied Documents
XPS는 크게 Fixed Documents와 Flow Documents 2가지 형태로 나누어 집니다. 이번강좌에서는 Fixed Documents에 대해 알아보겠습니다. Fixed Documents는 Read-Only의 읽기전용이며 용도는 XPS로 출판하여 보고서 형태의 기안을 작성한다거나 보안을 걸어서 특정사람에게만 열어보게 할 수도 있습니다.
XPS 문서를 보려면 XPS DocumentViwer Control이 필요합니다.
XPS 문서형태는 Package형태로 여러가지 파일의 묶음입니다. Package안에는 XML, Image, Font등의 여러가지 파일이 Zip 파일 형태의 데이터 집합입니다.
XPS문서를 열어보면 [그림 2]에서 보시는 것처럼 각각의 폴더를 열어보시면 XML이 존재하고 여기에 들어가는 Image, Font 등의 Resource가 들어가고 Image, Font등의 Content Type을 정의하는 Text 파일이 존재합니다.
그림 1. 압축풀기
그림 2.XPS파일 Package
XPS Documents를 handling하기 위해서는 ReachFramework라는 어셈블리(Assembly)를 추가해야 합니다.
그림 3. ReachFramework Assembly추가
그리고 비하인드 코드에는 System.Windows.Xps.Packaging를 추가합니다.
예제는 XPS문서를 볼 수 있는 XPS Documents Viewer 입니다. 파일메뉴에서 열기메뉴를 실행하면 OpenFileDialog 대화상자가 보여지고 XPS문서를 선택하면 DocumentViewer Control을 통해서 XPF문서를 볼 수 있는 형태의 간단한 프로그램입니다.
그럼 DocumentViewer Control와 메뉴를 추가하는 xaml코드와 OpenFileDialog 생성 및 XpsDocument를 추가하여 DocumentViewer Control에 XPS 문서를 읽기 모드로 출력하는 코드가 들어있는 cs코드를 보시겠습니다.
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="XPS Document Viewer" Height="450" Width="600">
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Open" />
<CommandBinding Command="ApplicationCommands.Close" />
</Window.CommandBindings>
<DockPanel>
<Menu Name="MainMenu" DockPanel.Dock="Top">
<MenuItem Header="File">
<MenuItem Command="ApplicationCommands.Open" Header="Open..." />
<MenuItem Command="ApplicationCommands.Close" Header="Close" />
</MenuItem>
</Menu>
<Grid DockPanel.Dock="Top">
<DocumentViewer Name="docViewer">
</DocumentViewer>
</Grid>
</DockPanel>
</Window>
코드를 보시면 Menu, DocumentViewr Control 추가 및 Open과 Close 이벤트를 CommandBinding에 추가하는 부분이 들어가 있습니다.
CommandBinding에 명령어를 추가하는 부분은 http://msdn2.microsoft.com/en-us/library/ms752308.aspx 를 참고하시면 Commanding 에 대해 좀더 자세한 설명이 나와있습니다.
DocumentViewr Control 코드를 보시면 name에 대한 속성만 설정되어 있는 것을 보실 수 있습니다.
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Shapes;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Forms;
using System.Windows.Xps.Packaging;
using System.IO;
namespace wpf26
{
public partial class Window1 : Window
{
private XpsDocument _xpsDocument;
private string _fileName;
public Window1() : base()
{
InitializeComponent();
AddCommandBindings(ApplicationCommands.Open,
OpenCommandHandler);
AddCommandBindings(ApplicationCommands.Close,
CloseCommandHandler);
}
private void OpenCommandHandler(object sender,
ExecutedRoutedEventArgs e)
{
OpenFileDialog dig = new OpenFileDialog();
dig.InitialDirectory = Directory.GetCurrentDirectory();
dig.Filter = "Xps Documents (*.xps)|*.xps";
dig.FilterIndex = 1;
if (dig.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
if (_xpsDocument != null)
_xpsDocument.Close();
try
{
_xpsDocument = new XpsDocument(dig.FileName,
System.IO.FileAccess.Read);
}
catch (UnauthorizedAccessException)
{
System.Windows.MessageBox.Show(
string.Format("Unable to access {0}",
dig.FileName));
return;
}
docViewer.Document =
_xpsDocument.GetFixedDocumentSequence();
_fileName = dig.FileName;
}
}
private void CloseCommandHandler(object sender,
ExecutedRoutedEventArgs e)
{
this.Close();
}
private void AddCommandBindings(
ICommand command, ExecutedRoutedEventHandler handler)
{
CommandBinding cmdBindings = new CommandBinding(command);
cmdBindings.Executed += handler;
CommandBindings.Add(cmdBindings);
}
}
}
OpenCommandHandler 메소드를 보시면 Using System.IO 네임스페이스를 선언하여 OpenFileDialog 클래스를 인스턴스 하여 대화상자를 만들고 _xpsDocument 변수에 XPS 문서를 읽기모드로 읽어와서 DocumentViewer에 보여줍니다.
AddCommandBindings 메소드는 CommandBinding에 Open, Close Command를 추가를 합니다. 그리고 Window1 생성자에서 AddCommandBindings 메소드를 추가하여 실행할 수 있도록 초기화를 합니다.
예제를 실행하면 다음과 같이 보실 수 있습니다.
그림 3. 프로그램 실행
그림 4. XPS 문서 출력
1. XPS Team Blog
http://blogs.msdn.com/xps/
2. Msdn WPF Documents
http://msdn2.microsoft.com/en-us/library/ms749165.aspx
3. XPS Specification
http://www.microsoft.com/whdc/xps/xpsspec.mspx
4. View and Generate XPS
http://www.microsoft.com/whdc/xps/viewxps.mspx
5. Msdn Magazine
http://msdn.microsoft.com/msdnmag/issues/06/01/XMLPaperSpecification/default.aspx
6.훈스닷넷 시샵 김수영님 동영상 강의(MS Visual C# MVP)
http://www.hoons.kr/SeminarReview.aspx (How to develop XPS with WPF )
다음강좌에는 XPS문서를 편집 및 다양한 형태의 출판에 효과적인 Flow Documents에 대해 알아보겠습니다.
※ 강좌 포스팅후
아직까지 WPF의 막강한 화려함에 가려 그 빛을 못보고 있지만 언론사, 출판업체 같은 곳에서 많은 관심을 보이고 있으므로 향후 이런곳에서 프로젝트를 할 기회가 있다면 분명 충분한 도움이 될 수 있다고 생각합니다. WPF 화려한 것만 신경쓰시지 말고 이런 WPF의 다양한 이면에도 관심을 갖고 공부를 하시면 많은 도움이 되리라 생각됩니다.
※ 작성자 정보
-----------------------------------------------------------------------------------------
Article Writer : 정태호
Mail : taediman@naver.com
H.P : Http://www.netfighter.pe.kr
-----------------------------------------------------------------------------------------
※ 테스트 환경
-----------------------------------------------------------------------------------------
운영체체 : Windows Vista Ultimate 32bit
개발툴 : Microsoft Visual C# Codename "Orcas"
-----------------------------------------------------------------------------------------
'WPF' 카테고리의 다른 글
| 이벤트 안에서 현재의 윈도우 객체 구하기 (0) | 2007/12/14 |
|---|---|
| 응용프로그램 Application 클래스 이벤트 처리 (0) | 2007/12/13 |
| 클래스 계층 구조 (0) | 2007/12/12 |
| [XPS] Fxied Documents (0) | 2007/08/10 |
| [XPS] View and Generate XPS (0) | 2007/08/10 |
| [Controls] 25. BulletDecorator (0) | 2007/08/10 |
| [3D] STARWARS NABOO (0) | 2007/07/09 |
| [Controls] 24. Element:Shape (Path - 2) (0) | 2007/02/01 |
글
[XPS] View and Generate XPS
View and Generate XPS Windows Vista None Required XPS documents open within Internet Explorer 7.0 or higher. Any application can generate XPS documents using the Microsoft XPS Document Writer. Windows XP XPS document viewing and generation capabilities are included in Microsoft .NET Framework 3.0. Windows XP Microsoft XPS Essentials Pack and Microsoft Core XML Services 6.0** XPS documents open in a stand-alone viewer application. Any application can generate XPS documents using the Microsoft XPS Document Writer.
Operating System
Download
Description
Windows Server 2003
XPS documents open within Internet Explorer 6.0 or higher.
Windows Server 2003
- null [본문으로]
'WPF' 카테고리의 다른 글
| 응용프로그램 Application 클래스 이벤트 처리 (0) | 2007/12/13 |
|---|---|
| 클래스 계층 구조 (0) | 2007/12/12 |
| [XPS] Fxied Documents (0) | 2007/08/10 |
| [XPS] View and Generate XPS (0) | 2007/08/10 |
| [Controls] 25. BulletDecorator (0) | 2007/08/10 |
| [3D] STARWARS NABOO (0) | 2007/07/09 |
| [Controls] 24. Element:Shape (Path - 2) (0) | 2007/02/01 |
| [Controls] 23. Element:Shape (Path - 1) (0) | 2007/02/01 |
wpf26.zip