イメージGetNダイアログを作成
このセクションではXファンクションのGetNダイアログを行列画像と共にプレビューする為のダイアログを作成します。これは、ダイアログのコントロールと画像のプレビューを起動する、画像のプレビューを更新する、ファイアログのコントロールをプレビューに反映するなどが含まれます。
内容 |
空のGetN イメージプレビューダイアログを作成する
- Xファンクションビルダを開くためにF10キーを押してください。
- Xファンクション編集ボックスに「ImageBox」と入力して、Xファンクションの名前にします。
- 変数リスト上で右クリックし、「変数の追加」を選択していくつかの変数を追加します。変数の名前、ラベル、他の値を次の画像と同じになるように入力します。
- Xファンクションビルダのツリービューボタン
をクリックしてツリービューに移動します。「使用のコンテクスト→メニュー」にある「自動GetNダイアログ」のドロップダウンリストで「GetNImageBox」を選択してから保存ボタンをクリックしてXファンクションを保存します。 - Xファンクションビルダを閉じ、新規行列ウィンドウを開きます。メニューから「ファイル→インポート→イメージファイルを行列へインポート」と操作してイメージファイルを選択し、行列ウィンドウにイメージをインポートします。
- 行列ウィンドウをアクティブにしたままコマンドウィンドウで「ImageBox -d」を実行します。GetNイメージプレビューダイアログが開きます。
コードビルダでXファンクションをコーディングする
- Originのコードビルダを開き、メニューからファイル→開く、と選択して先程保存したXファンクションを見つけて開きます。開くダイアログで「ワークスペースに追加」にチェックがついている事を確認してからOKをクリックします。ImageBox.XFCがOriginCワークスペースビューのユーザフォルダに追加され、編集ビューに関数のボディを表示します。
- //put additional include files here行の後に、次のような行を追加します。
//put additional include files here #include <image_utils.h> #include <..\Originlab\matdata_utils.h>
- //put your own support static functions
here と入力された行の下に、以下のようなstatic関数を追加します。
//サポート目的のstatic 関数をここに入力 static bool _adjust_image_brightness_ex(BITMAPHANDLE* pPreviewBitmap, TreeNode& trGetN, bool& bOKEnable, string& strErrMsg) { int nRet = adjust_image_brightness(pPreviewBitmap, trGetN.level.nVal); if( SUCCESS != nRet) { bOKEnable = false; //イメージの調整に失敗するとOKボタンを無効化 strErrMsg = "Fail to adjust image brightness"; // エラーメッセージの文字列 return false; } return true; }
GetNImageBox_OnInit イベント関数
このイベント関数はGetNイメージプレビューダイアログが開いた時に呼び出されます。これはイメージのプレビュー、ダイアログのコントロールを起動する時やOKボタンの有効化/無効化で使用できます。例えば、次のコードをGetNImageBox_OnInit 関数に追加してレベルコントロールの値を元に画像の明るさを変更するようにします。
// イメージプレビューコントロールからビットマップのハンドルポインタを入手 pBITMAPHANDLE pPreviewBitmap = pimgCntrl->GetBitmapHandlePtr(); // 内部関数を呼び出してイメージを調整 _adjust_image_brightness_ex(pPreviewBitmap, trGetN, bOKEnable, strErrMsg);
GetNImageBox_OnChange イベント関数
このイベント関数はグリッドがユーザによって変数された時に呼び出されます。これはダイアログコントロールで変更になったイメージプレビューを更新する時、ダイアログのコントロールを他のコントロールが変更になったところで更新する時、あるいはOKボタンの有効化/無効化について更新する時などに使用します。以下のコードをGetNImageBox_OnChange関数に追加してください。
// 内部関数を呼び出してイメージを調整。イメージプレビューを更新するにはtureを返す bUpdatePreview = _adjust_image_brightness_ex(pPreviewBitmap, trGetN, bOKEnable, strErrMsg);
メイン関数
メイン関数は対応するXファンクションと同じ名前を有します。以下のコードをメイン関数に追加してコンパイルボタンをクリックします。
// ビットマップハンドルポインタを入力イメージから出力イメージへコピー bool bCopy = true; oimg.SetLBmp(iimg.GetLBmp(), bCopy); // 出力イメージからビットマップハンドルポインタを入手 pBITMAPHANDLE phBmp = oimg.GetLBmp(); // 調整 adjust_image_brightness(phBmp, level);

