Upload
mitsuhito-ishino
View
6.700
Download
4
Embed Size (px)
DESCRIPTION
VSUG DAY 2012 Summer
Citation preview
石野 光仁@アイライト
セッションの目的
Metro アプリでの印刷デモを見てもらう
印刷のサンプル・プログラムを見てもらう
セッションのゴール
Metroアプリでの印刷を理解する
名前
石野 光仁
所属
Microsoft MVP for C#
▪ 2003/10 ~ 現在
コミュニティ
▪ アイライト主催▪ http://www.ailight.jp
Metro スタイル 印刷の紹介
プリンタドライバ
Metroで印刷 デモ
プログラム解説
サンプル・プログラム デモ
参考:メモリ不足の話
v3 プリンター ドライバー Windows8以前のドライバーモデル
デスクトップ アプリ:従来通り利用可能
Metro スタイル:オプションがすべて解放された状態
v4 プリンター ドライバー Windows8用に設計されたドライバーモデル
Metro スタイルアプリをサポート▪ 従来のデスクトップアプリでも利用可能
カスタマイズUIの表示が可能
デバイスチャーム アプリケーション内から印刷
ボタン等
Windows.Graphics.Printing. PrintManager public event TypedEventHandler<PrintManager,
PrintTaskRequestedEventArgs> PrintTaskRequested;
public static PrintManager GetForCurrentView();
public static IAsyncOperation<bool> ShowPrintUIAsync();
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));
}
Windows.UI.Xaml.Printing. PrintDocument IPrintDocumentSource DocumentSource { get; }
event GetPreviewPageEventHandler
GetPreviewPage;
event PaginateEventHandler Paginate;
void SetPreviewPage(int pageNumber, UIElement
pageVisual);
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;
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);}
PrintDocument_Paginate(object sender, PaginateEventArgs e)
E.PrintTaskOptionsの値
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();
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();
}
PrintManager PrintDocument
GetForCurrentView();
PrintTaskRequested +=
プリントの機能があることを伝える
args.Request.CreatePrintTask
DocumentSource
Paginate += //印刷前の情報取得
AddPages += //印刷AddPage () //ページを追加AddPagesComplete () //完
了
GetPreviewPage += //プレビュー
SetPreviewPage() //設定
メモリ不足
メモリ使用量:90%以上
▪ どのプロセスが持っているのか見えない
▪ 仮想メモリを使いまくって、ディスクアクセスが止まらない
再起動しても直らない
解決方法
完全再起動:Shutdown /r
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
http://www.ailight.jp