C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: PrintPreviewControlの用紙上の座標


(過去ログ 120 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■70378 / inTopicNo.1)  PrintPreviewControlの用紙上の座標
  
□投稿者/ Curina (1回)-(2014/03/17(Mon) 21:27:51)

分類:[VB.NET/VB2005 以降] 

PrintPreviewControlの用紙上の座標を取得する方法について

開発環境はWindows7のMicrosoftVisualStudio2012です。

現在図を描画した用紙をプレビューするというシステムを開発しております。
PrintPreviewControlを用いてプレビューさせています。
今回このコントロール内の用紙上の特定の位置をマウスで選択した際にイベントを発生させたいのですが、
コントロール上の座標は参照することができるものの、
プレビュー画面の拡大率・スクロール量に応じて表示位置の変わる用紙上の座標というものを取得することができません。
この用紙上の座標を取得する方法はあるのでしょうか?

当方VB暦1年未満の初心者です。調べてみたものの方法が分からず本格的な業務上の開発にも不慣れなため質問させていただきました。
ご存知の方がおられましたらご教授いただけるとありがたく存じます。

引用返信 編集キー/
■70387 / inTopicNo.2)  Re[1]: PrintPreviewControlの用紙上の座標
□投稿者/ shu (509回)-(2014/03/19(Wed) 15:00:44)
2014/03/19(Wed) 15:01:01 編集(投稿者)
No70378 (Curina さん) に返信

用紙の幅、高さ、表示倍率、表示位置を使って計算する必要があります。
表示位置を取得するのがちょっと大変で多分以下のような感じだと思います。
プライベートフィールドに無理やりアクセスしてます。

        Dim TypePrev = GetType(PrintPreviewControl)
        Dim FieldPos = TypePrev.GetField("position", _
                                    Reflection.BindingFlags.Instance Or _
                                    Reflection.BindingFlags.NonPublic Or _
                                    Reflection.BindingFlags.ExactBinding)
        Dim CurPos = CType(FieldPos.GetValue(PrintPreviewControl1), Point)

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -