Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

最近の作業部屋活動履歴

2023-04-16
2023-03-24
2023-03-22
2023-01-25

最近のWikiの更新 (Recent Changes)

2023-04-16
2023-03-24
2023-01-25
2023-01-08
2023-01-07

Wikiガイド(Guide)

サイドバー (Side Bar)

なるべく小さい構成でプロット画面を作る試み

はじめに

画像を自由に拡大縮小したり、画像上にマーカーを描画したりしたくなったので、簡単なプログラムを作ってみました。Windows.Forms でウィンドウを作成しますが GDI+ は使わず、Antigrain Geometry みたいにラスター画像データを作って丸ごとウィンドウに描画する方式で考えています。Windows.Forms のところは C#、ラスター画像作成部分は C++でそれぞれ作り、 C++ の部分を C# から P/Invokeで呼び出す流れです。 現状実現できている処理は

  1. 画像ファイル読み込み
  2. 枠線の描画
  3. 文字列の描画
  4. 縦軸、横軸の目盛りやグリッド線の描画
  5. ドラッグやマウスホイール操作に追従して画像のスライドや拡大縮小

といったところです。 1. は stb_image と この間作った SimpleFileDialogを、 2. は MIST、 3. はかなり昔に自作した フォント描画ライブラリを使用、 4. はチャート描画ライブラリ pplot を少し改造して使用、5. は C# WinForm と C++ を組み合わせて新規作成、といった構成になってます。

作成中の画面

ss2.png

プログラムを起動するとファイル選択ダイアログが表示され、画像を選択すると上図のように画像が画面表示されます。ドラッグやホイール操作も効きますし、ウィンドウの拡大縮小にも追従するようになってます。 スライドや拡大・縮小の結果、画像の範囲外が表示されないように調整する処理や、ズーム時にマウスカーソルがある位置を中心に拡大・縮小するように計算するところでちょっと手こずりました。一次方程式解くだけだったんですけどね・・・

画像は、Poly Haven で配布されている thatch_chapel_1k.hdr を使用させていただきました。

ライセンス

  • ソフト本体:Boost License v1.0
  • 依存ライブラリ ... 各ライブラリに適用されているライセンスに従ってください。
    • stb : MIT License or Public Domain
    • MIST : 三条項BSD License
    • pplot 一条項BSD License相当?
    • font_renderer : Boost License, v1.0
    • SimpleDialog : Boost License, v1.0

ソース