CAD日記

主にAutoCADのことについて書いているけど、近頃は投資系ネタに注力している。自動売買、仮想通貨、PC関係、プログラミングなど。@caddiary

ソフト開発

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

投稿日:2020年3月29日 更新日:

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の好きな場所を、マウス中ボタン操作で拡大・縮小・移動させて、その場所に捺印したいのだ。こればっかりやっていると時間ばかりとられて成果が何も残せないので、今日のところは調査の途中経過を記して終わる。

-ソフト開発

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連記事

若いもんにC++を教えてやって、これまでやってきたことが少しでも伝わってくれればと願う夜

ファイルをセレクトするというC++で作ったActiveXのDLLのデバッグができないかと彼がおいらのところに来た時点で、そいつはなかなかチカラがあるなと感じた。

no image

IS2008

「InstallShield おまえもか!」 まだ2007年だというのに、ソフト名に来年の年号を使う。 AutoCADがはじめたと思われる悪習。 (Windows Server 2008は、まだBet …

no image

アプリでzip圧縮と解凍をやりたくてzlibを組み込んでみたんだけど。。

でかいファイルは、圧縮してコンパクトに扱いたくなる。 テキスト形式で定義されているファイルをアプリで読み書きする。 テキストは圧縮すれば1/5くらいになるので、その結果小さくなった ファイルをアプリの …

no image

いたちごっこ2

恐るべしクラッカー。万全と思われた対策も空しく、2回目のクラックが行われたところから話は始まります。 ●2度目のクラック 開発者は、某シリアル系クラックサイトで2度目の衝撃の遭遇しました。クラック結果 …

no image

デバイスコンテキスト

デバイスコンテキストとは何かを調べてみた。 Device Context=装置の状況。直訳すると意味わからん。状況という言葉があいまいで、背景・場面・状況・文脈という意味があるが、やっぱわからないこと …