- - PR -
VB.NETでのPrintDocumentのデバイスコンテキストの取得方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-02-23 19:58
はじめて投稿させていただきます。
現在VB.NETで開発を行なっております。 PrintDocumentのデバイスコンテキストの取得方法がわからず困っております。 (あるツールのメソッドの引数として必要な為、取得したい) VB6の頃はPrinterオブジェクトのhDCプロパティにて取得できたようですが、 ヘルプを見ると 「この項目は必要なくなりました。 PrintDocument コンポーネントのインスタンスが、 デバイス コンテキストに相当します。」 と書かれておりました。 取得方法がわかる方がいらっしゃいましたら、よろしくお願いします。 | ||||
|
投稿日時: 2006-02-23 20:49
GetHdc メソッドを使いなさいということなのではないでしょうか? Graphics.GetHdc メソッド _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-23 22:39
じゃんぬねっとさん、ありがとうございます。
まだまだVB.NETの経験が浅く、もう1つお聞きしてもよろしいでしょうか? PrintDocumentは使わないで、かわりにGraphics.GetHdc メソッド を使いなさいと事なのでしょうか? | ||||
|
投稿日時: 2006-02-23 23:15
横から失礼します。
PrintDocument.PrintPageイベントで処理するとしたら引数 e as PrintPageEventArgsの e.Graphicsから取得できるという意味では? | ||||
|
投稿日時: 2006-02-24 01:49
仰るとおりです。 PrintDocument の場合はイベントで Document を完成させますからね。 個人的にこれはわかりにくいと思ってます。(イベント名を考えると) _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||
|
投稿日時: 2006-02-24 09:45
YASさん、じゃんぬねっとさん、
お忙しい中、ありがとうございます。 教えていただいたように PrintDocument.PrintPageイベントで取得するようにしてみたのですが、 イベント内で処理が行なわれ、その後、 PrintDocument1.Print()の箇所で、下記のエラーになってしまいます。 ----------------------------------------------------------- 'System.InvalidOperationException'のハンドルされていない例外が system.drawing.dllで発生しました。 追加情報:このオブジェクトは現在ほかの場所で使用されています。 ----------------------------------------------------------- ソースコード: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '印刷を開始する PrintDocument1.Print() End Sub Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage Dim hdc As Integer hdc = e.Graphics.GetHdc.ToInt32 '次のページがないことを通知する e.HasMorePages = False End Sub どうも、 hdc = e.Graphics.GetHdc.ToInt32 この1行があるとこのエラーが発生してしまいます。 間違いや、足りない処理などありますでしょうか? 何度も恐縮ですが、よろしくお願い致します。 | ||||
|
投稿日時: 2006-02-24 15:20
デバイスコンテキストハンドルを取得した後は解放しなければいけないはずです。
もしかすると解放をしていないからなのでは? Graphics.ReleaseHdc() | ||||
|
投稿日時: 2006-02-24 19:54
YASさん お忙しい中、ありがとうございました。 御指摘の通り、デバイスコンテキストハンドルを解放していない為でした。 じゃんぬねっとさん、YASさんに教えていただき、 無事に取得する事ができ、且つ目的の処理を実現させる事が出来そうです。 本当にありがとうございました。 |
1