イメージGetNダイアログを作成

このセクションではXファンクションのGetNダイアログを行列画像と共にプレビューする為のダイアログを作成します。これは、ダイアログのコントロールと画像のプレビューを起動する、画像のプレビューを更新する、ファイアログのコントロールをプレビューに反映するなどが含まれます。

Ocguide xf imagepreview dialog.png

内容

  1. 1 空のGetN イメージプレビューダイアログを作成する
  2. 2 コードビルダでXファンクションをコーディングする
  3. 3 GetNImageBox_OnInit イベント関数
  4. 4 GetNImageBox_OnChange イベント関数
  5. 5 メイン関数
  6. 6 Xファンクションの使用

空のGetN イメージプレビューダイアログを作成する

  1. Xファンクションビルダを開くためにF10キーを押してください。
  2. Xファンクション編集ボックスに「ImageBox」と入力して、Xファンクションの名前にします。
  3. 変数リスト上で右クリックし、「変数の追加」を選択していくつかの変数を追加します。変数の名前、ラベル、他の値を次の画像と同じになるように入力します。
    Ocguide xf imagepreview variables.png
  4. XファンクションビルダのツリービューボタンOcguide xf treeview button.pngをクリックしてツリービューに移動します。「使用のコンテクスト→メニュー」にある「自動GetNダイアログ」のドロップダウンリストで「GetNImageBox」を選択してから保存ボタンをクリックしてXファンクションを保存します。
  5. Xファンクションビルダを閉じ、新規行列ウィンドウを開きます。メニューから「ファイル→インポート→イメージファイルを行列へインポート」と操作してイメージファイルを選択し、行列ウィンドウにイメージをインポートします。
  6. 行列ウィンドウをアクティブにしたままコマンドウィンドウで「ImageBox -d」を実行します。GetNイメージプレビューダイアログが開きます。

コードビルダでXファンクションをコーディングする

  1. Originのコードビルダを開き、メニューからファイル→開く、と選択して先程保存したXファンクションを見つけて開きます。開くダイアログで「ワークスペースに追加」にチェックがついている事を確認してからOKをクリックします。ImageBox.XFCがOriginCワークスペースビューのユーザフォルダに追加され、編集ビューに関数のボディを表示します。
  2. //put additional include files here行の後に、次のような行を追加します。
    //put additional include files here
    #include <image_utils.h>
    #include <..\Originlab\matdata_utils.h>
            
  3. //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);

Xファンクションの使用

  1. コマンドウィンドウで「ImageBox -d」を実行し、このXファンクションのダイアログを開きます。レベルコントロールの値を変更してプレビューの明るさが変更する事を確認します。
  2. Ocguide dialog theme.pngボタンをクリックしてテーマコンテキストメニューを開き、名前を付けて保存をクリックした後に「mylevel」としてテーマ名ボックスに入力します。そしてOKをクリックしてテーマファイルを作成します。キャンセルを押してXファンクションダイアログを閉じます。
  3. コマンドウィンドウで「ImageBox -d -t mylevel」を実行し、Xファンクションをダイアログを指定したテーマで開きます。