WPF/C# で表示中の画像を A4 用紙いっぱいに印刷する
WPF/C# でアプリケーション内に表示している画像を A4 用紙いっぱいに配置して印刷する方法です。
印刷方法については、こちらの記事 を参考にさせていただいてます。
事前準備
WPF アプリケーションのプロジェクトに「System.Printing」と「ReachFramework」の参照を追加します。
表示中の画像の印刷
WPF アプリケーションで System.Windows.Controls.Image クラスを使って画像を表示している場合、この ImageSource プロパティを渡すだけで表示中の画像が印刷されます。Viewbox を使っているので A4 用紙いっぱいに配置されます。
public static void PrintImage(ImageSource imageSource)
{
using (var server = new LocalPrintServer())
{
// A4 縦の用紙を準備
var queue = server.DefaultPrintQueue;
var ticket = queue.DefaultPrintTicket;
ticket.PageMediaSize = new PageMediaSize(PageMediaSizeName.ISOA4);
ticket.PageOrientation = PageOrientation.Portrait;
// 印刷可能領域を取得
var area = queue.GetPrintCapabilities().PageImageableArea;
if (area == null) throw new Exception("印刷可能領域の取得に失敗 ...");
// 用紙いっぱいにイメージを配置
var page = new FixedPage();
var viewBox = new Viewbox
{
Child = new Image { Source = imageSource },
Margin = new Thickness(area.OriginWidth, area.OriginHeight, 0, 0),
Width = area.ExtentWidth,
Height = area.ExtentHeight,
VerticalAlignment = VerticalAlignment.Top
};
page.Children.Add(viewBox);
// デフォルトプリンタで印刷
PrintQueue.CreateXpsDocumentWriter(queue).Write(page, ticket);
}
}
こんな感じに。
ここでは仮想プリンタに出力して PDF で保存したんですが、実際のプリンタを「通常使うプリンターに設定」しておけば、このメソッドを呼ぶだけで直接、印刷されます。
Author And Source
この問題について(WPF/C# で表示中の画像を A4 用紙いっぱいに印刷する), 我々は、より多くの情報をここで見つけました https://qiita.com/hyukix/items/d9d8828db2c716e48716著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .