Henehefu 用 ウィキ

メニュー



- Views

最近の更新

取得中です。

WPFメモ > Visualを印刷する


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

WPFで印刷ダイアログを出してVisual要素を印刷する


プロジェクトの参照の追加に System.Printing を追加すること。

コード

//
        public void PrintVisual(Visual visual, string description)
        {
            var dialog = new PrintDialog();
            var result = dialog.ShowDialog();
            if(result ?? false) {
 
                var pv = CreatePrintingVisual(visual, dialog);
                dialog.PrintVisual(pv, description);
 
            }
        }
 
        private Visual CreatePrintingVisual(Visual v, PrintDialog dialog)
        {
            var dv = new DrawingVisual();
            using(var dc = dv.RenderOpen()) {
                var brush = new VisualBrush(v);
                var pw = dialog.PrintableAreaWidth;
                var ph = dialog.PrintableAreaHeight;
                var fe = v as FrameworkElement;
 
                var rect = CreatePrintingRect(fe, pw, ph);
                dc.DrawRectangle(brush, null, rect);
            }
            return dv;
        }
 
        private Rect CreatePrintingRect(FrameworkElement fe, double pw, double ph)
        {
            Rect rect;
            if(fe == null) {
                rect = new Rect(0, 0, pw, ph);
            }
            else {
                var w = fe.ActualWidth;
                var h = fe.ActualHeight;
                var scalex = pw / w;
                var scaley = ph / h;
                var scale = Math.Min(scalex, scaley);
                rect = new Rect(0, 0, w * scale, h * scale);
 
            }
            return rect;
        }
 

使い方

PrintVisual(印刷したいコントロールとか, "そんなことよりミスラと...");
 

タグ一覧