2016-05-30 10 views
0

MapControlは私のルートを作成するだけです。今、私はそれを印刷する方法を理解する必要があります。 UWP印刷サンプルを使用して、コントロールがあるべき場所に黒いボックスが表示されます。プリントプレビューで正しく表示されないだけで、マップとルートが構築されています。私はMapControl.Printを見たと思ったが、それはBing.Mapsのものだと思う。任意のポインタが評価されるだろう。ありがとう。UWP MapControlのルート結果を印刷する必要があります

答えて

0

UWP印刷サンプルを使用すると、コントロールが必要なブラックボックスが表示されます。

MapControlは印刷できないようです。

ワークエリアとしてRenderTargetBitmapを使用してMapControlから画像を取得できます。画像を印刷できること。 RenderTargetBitmapを使用して

、あなたは、このような元々ナビゲーションシステムのための子ページのサムネイル画像を生成し、XAML UI組成から来た、またはの一部を保存するためにユーザを有効にすることを視覚的にイメージ効果を適用するなどのシナリオを達成することができますUIを画像ソースとして使用し、その画像を他のアプリと共有することができます。

RenderTargetBitmapはImageSourceのサブクラスなので、Image要素またはImageBrushブラシのイメージソースとして使用できます。

詳細については、RenderTargetBitmapを参照してください。例えば

RenderTargetBitmap renderTargetBitmap = new RenderTargetBitmap(); 
await renderTargetBitmap.RenderAsync(MyMap); 
MyImage.Source = renderTargetBitmap; 

印刷コード:

public sealed partial class MainPage : Page 
{ 
    private PrintManager printmgr = PrintManager.GetForCurrentView(); 
    private PrintDocument printDoc = null; 
    private PrintTask task = null; 

    public MainPage() 
    { 
     this.InitializeComponent(); 

     printmgr.PrintTaskRequested += Printmgr_PrintTaskRequested; 
    } 

    private void Printmgr_PrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs args) 
    { 
     var deferral = args.Request.GetDeferral(); 

     task = args.Request.CreatePrintTask("Print", OnPrintTaskSourceRequrested); 
     task.Completed += PrintTask_Completed; 
     deferral.Complete(); 
    } 

    private void PrintTask_Completed(PrintTask sender, PrintTaskCompletedEventArgs args) 
    { 
     //the PrintTask is completed 
    } 

    private async void OnPrintTaskSourceRequrested(PrintTaskSourceRequestedArgs args) 
    { 
     var def = args.GetDeferral(); 
     await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, 
     () => 
      { 
       args.SetSource(printDoc?.DocumentSource); 
      }); 
     def.Complete(); 
    } 

    private async void appbar_Printer_Click(object sender, RoutedEventArgs e) 
    { 
     if (printDoc != null) 
     { 
      printDoc.GetPreviewPage -= OnGetPreviewPage; 
      printDoc.Paginate -= PrintDic_Paginate; 
      printDoc.AddPages -= PrintDic_AddPages; 
     } 
     this.printDoc = new PrintDocument(); 

     printDoc.GetPreviewPage += OnGetPreviewPage; 

     printDoc.Paginate += PrintDic_Paginate; 

     printDoc.AddPages += PrintDic_AddPages; 

     bool showPrint = await PrintManager.ShowPrintUIAsync(); 
    } 

    private void PrintDic_AddPages(object sender, AddPagesEventArgs e) 
    { 
     printDoc.AddPage(this); 

     printDoc.AddPagesComplete(); 
    } 

    private void PrintDic_Paginate(object sender, PaginateEventArgs e) 
    { 
     PrintTaskOptions opt = task.Options; 

     printDoc.SetPreviewPageCount(1, PreviewPageCountType.Final); 
    } 

    private void OnGetPreviewPage(object sender, GetPreviewPageEventArgs e) 
    { 
     printDoc.SetPreviewPage(e.PageNumber, this); 
    } 
} 
+0

おかげで、非常に役立ちます。私はMapControlからRenderTargetBitmapを持っていますが、印刷できないようです。私はオンスクリーンコントロールでビットマップを見ることができますが、試して印刷するときは、通常は単色です(毎回同じ色ではありません)。ビットマップを画面にレンダリングすると見ることができますが、印刷プレビューではそれは不思議です。 –

+0

RenderTargetBitmapはmapcontrolがロードされるのを待つ必要があります。mapcontrolがロードされていないと、それが不思議な空白になっている可能性があります。 –

+0

これがなぜ必要なのかよく分かりませんが、RenderTargetBitmapをjpgイメージとしてtempディレクトリに保存することですべての作業を完了できました。私はXAMLでそのファイルにバインドし、印刷物は正常に動作します。 –

関連する問題