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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

2946閲覧

pictureBoxを印刷する際、プレビューにて縦横比がおかしくなる

ygoooo

総合スコア71

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2017/07/25 02:29

フォームアプリケーションでpictureBoxを印刷しようとしているのですが、
プレビューにて縦に妙に引き延ばされてしまいます。

イメージ説明
↓プレビュー
イメージ説明

実際印刷をしていないのでこのままプリントされるかわかりませんが、
フォームで見ているpictureBoxそのままの比率でプレビュー表示、また印刷する方法をご教授お願いします。

C#

1//プレビュー 2private void button1_Click(object sender, EventArgs e) 3{ 4 System.Drawing.Printing.PrintDocument pd =new System.Drawing.Printing.PrintDocument(); 5 pd.PrintPage +=new System.Drawing.Printing.PrintPageEventHandler(printDocument1_PrintPage); 6 PrintPreviewDialog ppd = new PrintPreviewDialog(); 7 ppd.Document = pd; 8 ppd.ShowDialog(); 9} 10 11//印刷 12private void button2_Click(object sender, EventArgs e) 13{ 14 PrintDocument pd = new PrintDocument(); 15 pd.PrintPage += new PrintPageEventHandler(printDocument1_PrintPage); 16 pd.Print(); 17} 18 19//GOボタン(pictureboxに表示) 20private void button3_Click(object sender, EventArgs e) 21{ 22 //表示する文字列 23 string print1 = textBox1.Text; 24 string print2 = textBox2.Text; 25 26 Bitmap canvas = new Bitmap(pictureBox1.Width, pictureBox1.Height); 27 //ImageオブジェクトのGraphicsオブジェクトを作成する 28 Graphics g = Graphics.FromImage(canvas); 29 30 Font fnt = new Font("Arial", 25); 31 StringFormat sf = new StringFormat(); 32 //文字列を描画するときの大きさを計測する 33 SizeF stringSize = g.MeasureString(print1, fnt, 1000, sf); 34 //取得した文字列の大きさを使って四角を描画する 35 g.FillRectangle(Brushes.Black, 0, 0, stringSize.Width, stringSize.Height); 36 37 //文字列を描画する 38 g.DrawString(print1, fnt, Brushes.White, 0, 0, sf); 39 g.DrawString('\n' + print2, fnt, Brushes.Black, 0, 0, sf); 40 41 //リソースを解放する 42 fnt.Dispose(); 43 sf.Dispose(); 44 g.Dispose(); 45 46 //PictureBox1に表示する 47 pictureBox1.Image = canvas; 48} 49 50//printDocument 51private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 52{ 53 var image = pictureBox1.Image; 54 e.Graphics.DrawImage(image,e.MarginBounds); 55}

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

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

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

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

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

guest

回答1

0

ベストアンサー

DrawImageで印刷可能領域を指定しており、imageの縦横比と、印刷可能領域の縦横比が異なるため、縦横比がおかしく印刷されています。
このため、DrawImageのサイズ指定を下記のように変えることで、縦横比が正しく表示されます。
(大きさは第4引数、第5引数で調整してください。)

C#

1e.Graphics.DrawImage(image, 0, 0, image.Width, image.Height);

投稿2017/07/25 06:03

koguma98

総合スコア288

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

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

ygoooo

2017/07/25 06:14

ありがとうございます。無事希望通りの表示になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問