質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

1565閲覧

C#(WPF)印刷中央寄せ

40ta

総合スコア6

印刷

印刷とは、インキを用いて紙などの被印刷物に機械的に複製することを指します。現在は紙などの2次元の媒体だけでなく、3次元の曲面にも直接印刷する技術など様々な開発が進んでいます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

1グッド

0クリップ

投稿2020/03/13 11:45

前提・実現したいこと

C#(WPF)で、スクリーンキャプチャの印刷を中央寄せでしたいです。

発生している問題・エラーメッセージ

Windows7、Windows10どちらでも使いたいのですが、 Windows10では中央寄せできたのですが、Windows7の画像がズレたり欠けたりしています。 原因は、用紙サイズ、余白、描画可能範囲が7と10で違う値になっているためでした。 OSのバージョンによって処理を変えるしか方法はないのでしょうか?

該当のソースコード

C#(WPF)

1 var defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue(); 2 var userPrintTicket = defaultPrintQueue.UserPrintTicket; 3 var pageImageableArea = defaultPrintQueue.GetPrintCapabilities().PageImageableArea; 4 5 var pageWidth = userPrintTicket.PageMediaSize.Width.Value; // 用紙サイズ 6 var pageHeight = userPrintTicket.PageMediaSize.Height.Value; 7 var originWidth = pageImageableArea.OriginWidth; // 余白 8 var originHeight = pageImageableArea.OriginHeight; 9 var extentWidth = pageImageableArea.ExtentWidth; // 描画可能範囲 10 var extentHeight = pageImageableArea.ExtentHeight;
s.k👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

40ta

2020/03/16 07:10

返信ありがとうございます。 いただいたURLを見てみましたが、用紙サイズ等がなぜ正しく取れないのかわかりませんでした。 PageMediaSizeNameを取得してみたところ、同じプリンタで同じように設定しているのですが、Win10ではISOA4となるのに、Win7ではNorthAmericaLetterとなっていました。前提条件に書けていませんでしたが英語OSのせいかもしれません。 そのため、以下のようにA4を代入しましたが、今度は用紙サイズがWもHもNullになってしまいました。 userPrintTicket.PageMediaSize = new PageMediaSize(PageMediaSizeName.ISOA4); ひとまず、無理やり位置調整してOSが7か10かで処理を分けています。
Zuishin

2020/03/16 07:12

用紙サイズが無いのでインストールしてください。プリンタによって方法は違います。
40ta

2020/05/24 09:52

ありがとうございました。 プリンタのインストールをやり直すことで、 同じ用紙サイズを指定していれば、 PC&OSが違っていても用紙サイズが同じ値になることが確認できました。 すみません。なかなか環境が用意できず返信が遅れてしまいました。 これで中央寄せもできそうです。また時間がかかりそうですので、これで解決にしたいと思います。
Zuishin

2020/05/24 10:00

自己解決してください。
guest

回答1

0

自己解決

プリンタのインストールに失敗していたようです。
Zuishinさんのコメントを見て、再度やり直すことで、Windows7でもWindows10でも用紙サイズ等は同じ値になりました。

ありがとうございました。

投稿2020/05/24 10:10

40ta

総合スコア6

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問