狠狠撸

狠狠撸Share a Scribd company logo
石野 光仁@アイライト
?   セッションの目的
    ? 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();             DocumentSource

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

    PrintTaskRequested +=       GetPreviewPage += //プレ
                                ビュー
プリントの機能があることを伝え                   SetPreviewPage() //設定
              る
 args.Request.CreatePrintTask   AddPages += //印刷
                                   AddPage () //ページを追加
                                   AddPagesComplete () //完
                                了
?   メモリ不足
    ? メモリ使用量: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

More Related Content

Metro スタイル アプリで印刷

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