Search
Duplicate

C#でUWPデスクトップアプリを作る 5/5: 印刷機能を追加してアプリを完成させる

Published On
2024/09/13
Lang
JP
Tags
Programming
Window Development
UWP

シリーズ

こんにちは!今回の投稿では、フォトブースアプリに印刷機能を追加し、アプリを実行ファイルにパッケージングする方法を説明します。これにより、アプリが完成し、配布の準備が整います。UIはすでに準備されているので、印刷関連の関数を作成して、ユーザーが撮影した写真をすぐにプリンターで出力できるように設定していきましょう。

1. 印刷機能の実装

UWPでは、Windows.Graphics.Printing APIを使用して印刷機能を実装できます。私たちはPrintManagerPrintDocumentを使用して、印刷プレビューを提供し、プリンターへの出力をサポートします。

1.1 PrintManagerの初期化と印刷プレビューの作成

印刷ジョブを処理するためにPrintManagerPrintDocumentを初期化し、撮影された画像を印刷する準備をします。
private PrintManager printManager; private PrintDocument printDocument; private IPrintDocumentSource printDocumentSource; private UIElement printPreview; // 印刷プレビューを保存する変数 public MainPage() { this.InitializeComponent(); EnterFullScreenMode(); InitializeCameraAsync(); // PrintManagerの初期化 printManager = PrintManager.GetForCurrentView(); printManager.PrintTaskRequested += PrintManager_PrintTaskRequested; }
C#
복사
PrintManagerは印刷リクエストを処理する中心的なクラスです。これを初期化し、ユーザーが印刷を要求したときに印刷ジョブを処理できるように設定します。

1.2 印刷ボタンクリックイベントの処理

ユーザーが印刷ボタンをクリックしたときに呼び出されるイベントです。この関数では、PrintManager.ShowPrintUIAsync()を使用して印刷ダイアログを表示し、印刷ジョブを開始します。
private async void PrintButton_Click(object sender, RoutedEventArgs e) { try { // 印刷プレビューの更新 printPreview = CreatePrintPage(); // PrintDocumentの再初期化 printDocument = new PrintDocument(); printDocumentSource = printDocument.DocumentSource; printDocument.Paginate += PrintDocument_Paginate; printDocument.GetPreviewPage += PrintDocument_GetPreviewPage; printDocument.AddPages += PrintDocument_AddPages; // 印刷作業の開始 await PrintManager.ShowPrintUIAsync(); } catch (Exception ex) { System.Diagnostics.Debug.WriteLine($"PrintButton_Clickでエラーが発生: {ex.Message}"); } }
C#
복사
PrintButton_Click関数は、ユーザーが印刷ボタンをクリックしたときに印刷プレビューを生成し、PrintManagerを通じて印刷UIを表示します。

1.3 印刷ジョブの処理

PrintManager_PrintTaskRequestedPrintDocumentを使用して印刷ジョブを処理します。印刷するページを作成し、そのプレビューを提供することで、印刷プロセスをユーザーに表示します。
private void PrintManager_PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs args) { var printTask = args.Request.CreatePrintTask("PhotoBooth Print", sourceRequestedArgs => { sourceRequestedArgs.SetSource(printDocumentSource); }); printTask.Completed += PrintTask_Completed; } private void PrintDocument_Paginate(object sender, PaginateEventArgs e) { printDocument.SetPreviewPageCount(1, PreviewPageCountType.Final); } private void PrintDocument_GetPreviewPage(object sender, GetPreviewPageEventArgs e) { // 事前に生成された印刷プレビューを使用 printDocument.SetPreviewPage(1, printPreview); } private void PrintDocument_AddPages(object sender, AddPagesEventArgs e) { // 事前に生成された印刷プレビューを使用 printDocument.AddPage(printPreview); printDocument.AddPagesComplete(); }
C#
복사
PrintManager_PrintTaskRequestedは印刷ジョブが要求されたときに印刷する内容を設定し、PrintDocumentを通じて印刷するページのプレビューを提供します。

1.4 印刷する画像の生成

印刷する画像を含むページを構成する関数です。ここでは、撮影された写真をCapturedImage.Sourceから取得し、印刷するページに追加します。
private UIElement CreatePrintPage() { Image printImage = new Image { Source = CapturedImage.Source, // 合成された画像 Stretch = Windows.UI.Xaml.Media.Stretch.UniformToFill, // 画像が画面に合わせてサイズ調整 HorizontalAlignment = HorizontalAlignment.Center, VerticalAlignment = VerticalAlignment.Center, }; StackPanel printPanel = new StackPanel(); printPanel.Children.Add(printImage); return printPanel; }
C#
복사
この関数では、合成された画像を含むImageオブジェクトを生成して印刷の準備を整えます。

2. 実行ファイルにパッケージング

印刷機能を追加したので、次はアプリを実行ファイルにパッケージングして配布する段階です。UWPアプリを実行ファイルにパッケージングするには、Visual Studioで以下の手順に従います。

2.1 プロジェクトのビルド

1.
Visual Studioでプロジェクトが正常にビルドされ、実行できることを確認します。
2.
メニューからビルド > ソリューションのビルドをクリックしてプロジェクトをビルドします。

2.2 アプリのパッケージング

1.
Visual StudioのメニューからProject > Publish > Create App Packagesの作成を選択します。
2.
「はい」を選択してアプリパッケージを作成します。
3.
配布方法としてサイドローディングを選択し、アプリパッケージを生成します。

2.3 インストールファイルの配布

パッケージの生成が完了すると、.appxファイルと共に必要な証明書ファイル(.cer)を含むパッケージが作成されます。これらのファイルを他のユーザーに提供することで、アプリをインストールできるようになります。

3. まとめ

今回の投稿では、フォトブースアプリに印刷機能を追加し、アプリを実行ファイルにパッケージングして配布する過程を説明しました。これにより、ユーザーは撮影した写真をプリンターで出力できるようになり、アプリを配布可能な状態に仕上げることができました。

最終まとめ

この5部作シリーズを通じて、C#とUWPを使用してフォトブースアプリを開発しました。アプリにはカメラ撮影、画像合成、印刷機能が含まれており、配布まで完了しました。今後もUWPとC#を活用して様々な機能を実装し、拡張していくことができるでしょう。

他の言語で読む:

著者をサポートする:

私の記事を楽しんでいただけたら、一杯のコーヒーで応援してください!
Search
September 2024
Today
S
M
T
W
T
F
S