18
石野 光仁@アイライト

Metro スタイル アプリで印刷

Embed Size (px)

DESCRIPTION

VSUG DAY 2012 Summer

Citation preview

Page 1: Metro スタイル アプリで印刷

石野 光仁@アイライト

Page 2: Metro スタイル アプリで印刷

セッションの目的

Metro アプリでの印刷デモを見てもらう

印刷のサンプル・プログラムを見てもらう

セッションのゴール

Metroアプリでの印刷を理解する

Page 3: Metro スタイル アプリで印刷

名前

石野 光仁

所属

Microsoft MVP for C#

▪ 2003/10 ~ 現在

コミュニティ

▪ アイライト主催▪ http://www.ailight.jp

Page 4: Metro スタイル アプリで印刷

Metro スタイル 印刷の紹介

プリンタドライバ

Metroで印刷 デモ

プログラム解説

サンプル・プログラム デモ

参考:メモリ不足の話

Page 5: Metro スタイル アプリで印刷

v3 プリンター ドライバー Windows8以前のドライバーモデル

デスクトップ アプリ:従来通り利用可能

Metro スタイル:オプションがすべて解放された状態

v4 プリンター ドライバー Windows8用に設計されたドライバーモデル

Metro スタイルアプリをサポート▪ 従来のデスクトップアプリでも利用可能

カスタマイズUIの表示が可能

Page 6: Metro スタイル アプリで印刷

デバイスチャーム アプリケーション内から印刷

ボタン等

Page 7: Metro スタイル アプリで印刷

Windows.Graphics.Printing. PrintManager public event TypedEventHandler<PrintManager,

PrintTaskRequestedEventArgs> PrintTaskRequested;

public static PrintManager GetForCurrentView();

public static IAsyncOperation<bool> ShowPrintUIAsync();

Page 8: Metro スタイル アプリで印刷

private void Page_Loaded(object sender, RoutedEventArgs e)

{

var printManager = PrintManager.GetForCurrentView();

printManager.PrintTaskRequested +=

printMan_PrintTaskRequested;

}

void printMan_PrintTaskRequested(PrintManager sender,

PrintTaskRequestedEventArgs args)

{

args.Request.CreatePrintTask("VSUG Test Print",

e => e.SetSource(_IPrintDocumentSource));

}

Page 9: Metro スタイル アプリで印刷

Windows.UI.Xaml.Printing. PrintDocument IPrintDocumentSource DocumentSource { get; }

event GetPreviewPageEventHandler

GetPreviewPage;

event PaginateEventHandler Paginate;

void SetPreviewPage(int pageNumber, UIElement

pageVisual);

Page 10: Metro スタイル アプリで印刷

public sealed partial class MainPage : Page

{

protected PrintDocument _PrintDocument = null;

protected IPrintDocumentSource _IPrintDocumentSource = null;

private void Page_Loaded(object sender, RoutedEventArgs e)

{

_PrintDocument = new PrintDocument();

_PrintDocument.Paginate += _PrintDocument_Paginate;

_PrintDocument.GetPreviewPage +=

_PrintDocument_GetPreviewPage;

_IPrintDocumentSource = _PrintDocument.DocumentSource;

Page 11: Metro スタイル アプリで印刷

public sealed partial class MainPage : Page{

protected PrintDocument _PrintDocument = null;protected IPrintDocumentSource _IPrintDocumentSource = null;

void _PrintDocument_Paginate(object sender, PaginateEventArgs e){}

void _PrintDocument_GetPreviewPage(object sender,GetPreviewPageEventArgs e){

Canvas page = new Canvas();

var image = new Image();var bitmap = new BitmapImage(new Uri("ms-appx:///Assets/VSUG.png"));image.Source = bitmap;

page.Children.Add(image);

_PrintDocument.SetPreviewPage(e.PageNumber, page);}

Page 12: Metro スタイル アプリで印刷

PrintDocument_Paginate(object sender, PaginateEventArgs e)

E.PrintTaskOptionsの値

Page 13: Metro スタイル アプリで印刷

Windows.UI.Xaml.Printing. PrintDocument IPrintDocumentSource DocumentSource { get; }

event AddPagesEventHandler AddPages;

event GetPreviewPageEventHandler

GetPreviewPage;

event PaginateEventHandler Paginate;

void SetPreviewPage(int pageNumber, UIElement

pageVisual);

void AddPage(UIElement pageVisual);

void AddPagesComplete();

Page 14: Metro スタイル アプリで印刷

void _PrintDocument_AddPages(object sender, AddPagesEventArgs e)

{

Canvas page = new Canvas();

var image = new Image();

var bitmap = new BitmapImage(

new Uri("ms-appx:///Assets/VSUG.png"));

image.Source = bitmap;

page.Children.Add(image);

_PrintDocument.AddPage(page);

_PrintDocument.AddPagesComplete();

}

Page 15: Metro スタイル アプリで印刷

PrintManager PrintDocument

GetForCurrentView();

PrintTaskRequested +=

プリントの機能があることを伝える

args.Request.CreatePrintTask

DocumentSource

Paginate += //印刷前の情報取得

AddPages += //印刷AddPage () //ページを追加AddPagesComplete () //完

GetPreviewPage += //プレビュー

SetPreviewPage() //設定

Page 16: Metro スタイル アプリで印刷

メモリ不足

メモリ使用量:90%以上

▪ どのプロセスが持っているのか見えない

▪ 仮想メモリを使いまくって、ディスクアクセスが止まらない

再起動しても直らない

解決方法

完全再起動:Shutdown /r

Page 17: Metro スタイル アプリで印刷

Windows 8 の印刷の概要

http://msdn.microsoft.com/ja-

jp/library/windows/hardware/hh852373

Windows 8 Release Preview Metro style

app samples - C#, VB.NET, C++,

JavaScript

http://code.msdn.microsoft.com/windowsapps/

Windows-8-Modern-Style-App-Samples

Print sample

Page 18: Metro スタイル アプリで印刷

http://www.ailight.jp