サイトアイコン CAD日記

【C#プログラミング】pictureBoxとBitmapで画面ズームと画面移動機能を実装したい

PDFアレコレでPDFを描画するために利用しているのがpictureBox。とっても便利なクラスで、PDFiumのでRenderした結果であるImageを渡すだけで済んでいる。こんな感じで。。

pictureBox1.Image = m_pdfDoc.Render(page, width, height, 100, 100, false);

m_pdfDoc.Renderの結果がpdfの指定ページの用紙全体なので、ページ全体の描画ができている。やりたいのはそれを拡大縮小すること。中ボタンのスクロールで拡大縮小、中ボタンドラッグで画面移動。1ページ分を1枚の図面と考えて、好きなところを拡大縮小したいという要求だ。中ボタンスクロールがページ移動とかぶるので、拡大縮小はCtrlを押した場合の動作とするべきだ。

あれこれググってただりついたのが以下サイト。
ピクチャボックスの画像をクリックして拡大、縮小表示できるようにする
これでよくわからないのは、Bitmapクラスを使っていること。pictureBox.ImageとBitmapは似たようなクラスであることはわかるんだけど、pictureBoxのPaintイベントでDrawImageしている点がよく理解できない。拡大縮小と画面移動をするのだから、拡大率と描画基準の座標を保持する必要がある。

以下の記事にヒントがあったが、VBで書かれていることと最終的にこうしたらうまくいったという形がはっきりしていないので、よくわからなかった。
PictureBoxに表示されている画像を拡大/縮小したい

午前中あれこれと試してみて答にたどり着けなかったのでいったんペンディング。PDFの好きな場所を、マウス中ボタン操作で拡大・縮小・移動させて、その場所に捺印したいのだ。こればっかりやっていると時間ばかりとられて成果が何も残せないので、今日のところは調査の途中経過を記して終わる。

モバイルバージョンを終了