- - PR -
Panelの領域だけ印刷したい
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-07 16:31
こんにちは。いつも参考にさせていただいています。
C#.NET 2003でWindowsアプリケーションを開発しています パネルの領域だけ印刷するにはどうしたら良いか、 どなたか教えていただけないでしょうか フォームの上にはパネルやボタンや、その他色々なコンポーネントがあるのですが ある特定のパネルの領域だけ印刷をしたいのです。 現状では、フォームの領域をBitmapにして、端っこから200とか300とか 絶対値を入れてちぎっています…。 | ||||
|
投稿日時: 2006-04-07 16:41
BitBlt を使ってイメージを作り、PrintDocument に流し込めばできると思います。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-04-11 10:11
返信がとっても遅れてすみません。
BitBltって何だろう???と思いましたが 調べてみたらすぐ解決しました! ありがとうございました。 | ||||
|
投稿日時: 2006-04-11 10:22
よろしければ、具体的にどのように解決したのかフィードバックして頂けませんか? 理由は、同じ問題で悩む第三者が、こちらを訪れた時に役に立つからです。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-04-12 11:46
そうでした、そうでした。
ええと、gdi32.dllをインポートしてBitBltという関数を使いました。 Graphics g_pl = pnl.CreateGraphics(); Bitmap bmp = new Bitmap(pnl.Size.Width, pnl.Size.Height, g_pl); Graphics g_mem = Graphics.FromImage(bmp); という感じでGraphicsオブジェクトを作って、 IntPtr dc1 = g_pl.GetHdc(); IntPtr dc2 = g_mem.GetHdc(); という感じでデバイスコンテキストハンドル?を取得して BitBlt(dc2, 0, 0, pnl.ClientRectangle.Width, pnl.ClientRectangle.Height, dc1, 0, 0, 13369376); で、パネルの領域を取得して PrintDocument.Print()で呼ばれるイベントの中に e.Graphics.DrawImage(bmp, 0, 0); //bmpは上記で使ったBitmap bmpです と書いたら印刷出来ました! http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/dv_vbcode/html/vbtskCodeExamplePrintingForm.asp ここを参考にしました。 イマイチ良くわからないのでまだまだ勉強が必要です…。 |
1