イメージGetNダイアログを作成
GetN, イメージダイアログ このセクションではXファンクションのGetNダイアログを行列画像と共にプレビューする為のダイアログを作成します。これは、ダイアログのコントロールと画像のプレビューを起動する、画像のプレビューを更新する、ファイアログのコントロールをプレビューに反映するなどが含まれます。
空のGetN イメージプレビューダイアログを作成する
- Xファンクションビルダを開くためにF10キーを押してください。
- Xファンクション編集ボックスに「ImageBox」と入力して、Xファンクションの名前にします。
- 変数リスト上で右クリックし、「変数の追加」を選択していくつかの変数を追加します。変数の名前、ラベル、他の値を次の画像と同じになるように入力します。
- Xファンクションビルダのツリービューボタンをクリックしてツリービューに移動します。「使用のコンテクスト→メニュー」にある「自動GetNダイアログ」のドロップダウンリストで「GetNImageBox」を選択してから保存ボタンをクリックしてXファンクションを保存します。
- Xファンクションビルダを閉じ、新規行列ウィンドウを開きます。メニューから「ファイル→インポート→イメージファイルを行列へインポート」と操作してイメージファイルを選択し、行列ウィンドウにイメージをインポートします。
- 行列ウィンドウをアクティブにしたままコマンドウィンドウで「ImageBox -d」を実行します。GetNイメージプレビューダイアログが開きます。
Xファンクション,
コードビルダでコーディングコードビルダで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;
}
Xファンクション,
イメージダイアログ Init イベント関数GetNImageBox_OnInit イベント関数
このイベント関数はGetNイメージプレビューダイアログが開いた時に呼び出されます。これはイメージのプレビュー、ダイアログのコントロールを起動する時やOKボタンの有効化/無効化で使用できます。例えば、次のコードをGetNImageBox_OnInit
関数に追加してレベルコントロールの値を元に画像の明るさを変更するようにします。
// イメージプレビューコントロールからビットマップのハンドルポインタを入手
pBITMAPHANDLE pPreviewBitmap = pimgCntrl->GetBitmapHandlePtr();
// 内部関数を呼び出してイメージを調整
_adjust_image_brightness_ex(pPreviewBitmap, trGetN, bOKEnable, strErrMsg);
Xファンクション,
イメージダイアログ OnChangeイベント関数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);
Xファンクションの使用 Xファンクション,
実行
- コマンドウィンドウで「ImageBox -d」を実行し、このXファンクションのダイアログを開きます。レベルコントロールの値を変更してプレビューの明るさが変更する事を確認します。
- ボタンをクリックしてテーマコンテキストメニューを開き、名前を付けて保存をクリックした後に「mylevel」としてテーマ名ボックスに入力します。そしてOKをクリックしてテーマファイルを作成します。キャンセルを押してXファンクションダイアログを閉じます。
- コマンドウィンドウで「ImageBox -d -t mylevel」を実行し、Xファンクションをダイアログを指定したテーマで開きます。
|