印刷したいのは、Formではなく、複数のPictureBoxなので、それを印刷する方法でもよいです。
PictureBoxに設定した画像を印刷したいということでよろしいでしょうか。画像を印刷するだけであれば、ツールボックスの印刷のところにあるPrintDocument
を使えば簡単にできます。
PrintDocument
をフォームに配置して下に表れたアイコンをダブルクリックすればPrintPage
イベントハンドラーが追加されますので、それを編集すれば良いです。
コード例
C#
1private void button1_Click(object sender, EventArgs e)
2{
3 page = 0;
4 printDocument1.Print();
5}
6
7private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
8{
9 page++;
10 // ページ番号に応じたPictureBoxからImageオブジェクトを取得します。
11 var image = pictureBox1.Image;
12
13 // 印刷イメージは通常のグラフィックと同じ要領で描画します。
14 e.Graphics.DrawImage(image, e.MarginBounds);
15
16 // `HasMorePages`プロパティで複数ページの印刷を制御します。
17 if(page < 20)
18 e.HasMorePages = true;
19 else
20 e.HasMorePages = false;
21}
最小限のコードなのでページレイアウトとか画像の縦横比とか考慮されていませんが、その辺は適宜実装してください。
コード例2
C#
1private void button1_Click(object sender, EventArgs e)
2{
3 printDocument1.Print();
4}
5
6private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
7{
8 var image = new Bitmap(this.Width, this.Height);
9 this.DrawToBitmap(image, new Rectangle(0, 0, this.Width, this.Height));
10 e.Graphics.DrawImage(image, e.MarginBounds);
11 e.HasMorePages = false;
12}
追記
ユーザーコントロールを使うやり方です。
プロジェクトメニューに「ユーザーコントロールの追加」でユーザーコントロールが追加できるので、適当な名前を付けて追加します。
PictureBoxをユーザーコントロールに配置します。ユーザーコントロールは画面からはみ出すぐらい大きくてもかまいません。
フォームの方にはPanel
を配置します。その際、Anchor
を上下左右に設定してフォームのサイズ変更に追従するようにし、AutoScroll
をtrueに設定してスクロールバーではみ出た部分を表示できるようにします。
いったんビルドします。するとツールボックスに追加したユーザーコントロールが現れますので、それをPanelに乗せます。
PrintPageでDrawToBitmapさせるのを、フォームではなく追加したユーザーコントロールにします。
コード例3
C#
1private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
2{
3 var image = new Bitmap(userControl11.Width, userControl11.Height);
4 userControl11.DrawToBitmap(image, new Rectangle(0, 0, image.Width, image.Height));
5 e.Graphics.DrawImage(image, e.MarginBounds);
6 e.HasMorePages = false;
7}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/01/29 00:28
2016/01/29 01:09 編集
退会済みユーザー
2016/01/29 05:38
2016/01/29 10:14
退会済みユーザー
2016/02/01 02:26
2016/02/01 03:41