フレームを表示

ANNSNAPTOGRIDOPTIONS

フレームを表示

typedef  struct tagANNSNAPTOGRIDOPTIONS
{
   L_UINT uStructSize; 
   L_UINT uFlags;
   COLORREF crGridColor;
   L_UINT uGridLength;
   L_UINT uLineSpacing;
   L_UINT uLineStyle;
   L_BOOL bEnableSnap;
   L_BOOL bShowGrid;
   L_BOOL bAutoChangeGridLength;
   L_INT32 nReserved;
} ANNSNAPTOGRIDOPTIONS, *pANNSNAPTOGRIDOPTIONS;

ANNSNAPTOGRIDOPTIONS構造体はL_AnnSetSnapToGridのためにグリッドスナップオプションを取得して設定するのに用いられます、そして、L_AnnGetSnapToGridは機能します。

メンバ

説明

uStructSize

この構造体のサイズ(バイト単位)。バージョニング用。この値を計算するために、マクロsizeof()を使います。

uFlags

どのフィールドが有効かについて確認します。設定可能な値は、1つ以上の以下の定数「OR演算子」です。設定可能な値は、以下の通りです。

 

意味

 

ANNSNAPTOGRID_GRID_COLOR

[0x0001]、crGridColorフィールドは有効です。

 

ANNSNAPTOGRID_GRID_LENGTH

[0x0002]、uGridLengthなフィールドは有効です。

 

ANNSNAPTOGRID_LINE_SPACING

[0x0004]uLineSpacingしているフィールドは、有効です。

 

ANNSNAPTOGRID_LINE_STYLE

[0x0008]、uLineStyleフィールドは有効です。

 

ANNSNAPTOGRID_ENABLE_SNAP

[0x0010]、bEnableSnapフィールドは有効です。

 

ANNSNAPTOGRID_SHOW_GRID

[0x0020]、bShowGridフィールドは有効です。

 

ANNSNAPTOGRID_AUTO_CHANGE_GRID_LENGTH

[0x0040]、bAutoChangeGridLengthなフィールドは有効です。

 

ANNSNAPTOGRID_ALL

すべてがフラグを立てることを使います、これの値は、同等にフラグを立てます(

 

 

ANNSNAPTOGRID_GRID_COLOR                   |

 

 

ANNSNAPTOGRID_GRID_LENGTH       |

 

 

ANNSNAPTOGRID_LINE_SPACING          |

 

 

ANNSNAPTOGRID_LINE_STYLE  |

 

 

ANNSNAPTOGRID_ENABLE_SNAP |

 

 

ANNSNAPTOGRID_SHOW_GRID                  |

 

 

ANNSNAPTOGRID_AUTO_CHANGE_GRID_LENGTH)

crGridColor

オーバレイのグリッドのために使われるカラーを表すCOLORREF値。

 

uGridLengthな

グリッド(ピクセル単位で100%で表示される)のlength。5~999は含んでいなければなりません。

uLineSpacingすること

行がグリッドドットパターンの上に描画されるFrequency。1~100は含んでいなければなりません。

uLineStyle

線種を指定する定数。設定可能な値は、以下の通りです。

 

意味

 

ANNLINE_SOLID

[0] 実線。

 

ANNLINE_DASH

[1] 破線。

 

ANNLINE_DOT

[2] 点線。

 

ANNLINE_DASHDOT

[3] 点行を投げつけます。

 

ANNLINE_DASHDOTDOT

[4] 点行を投げつけます。

 

ANNLINE_NULL

[5] 行でない。

 

注意:Windowsは、実線として1ピクセルより大きいすべての行を示します。

 

可能性がある線種を確認するには、アノテーションのための線種の説明を参照してください。

bEnableSnap

設計モードではアノテーションオブジェクトを描画するか、移動するとき、『スナップ』動作を示すフラグ。設定可能な値は、以下の通りです。

 

意味

 

True

アノテーションオブジェクトを移動するか、描画することは、最も近いグリッド点にカチッとしまります。

 

False

アノテーションオブジェクトを移動するか、描画することは、最も近いグリッド点にカチッとしまりません。

bShowGrid

設計モードではグリッドを示すか否かを問わず、指示するフラグ。設定可能な値は、以下の通りです。

 

意味

 

True

グリッド設計モードを示します。

 

False

グリッドを示しません。

bAutoChangeGridLengthな

100%、200%、400%などによってズームインするとき、原子的にグリッドの解像度を増やすべきかどうかについて示すフラグ:

 

意味

 

True

できれば、自動的に、ズームするとき、グリッドの解像度を増やします。

 

False

自動的に、ズームするとき、グリッドの解像度を増やしません。

nReservedされます

今後使うため確保されます。ゼロまで設定されなければなりません。

コメント

ANNSNAPTOGRIDOPTIONS構造体が、アノテーションオートメーション設計モードでグリッド動作にアノテーションスナップを取得または設定するために、関数L_AnnSetSnapToGridL_AnnGetSnapToGridで使われます。L_AnnGetSnapToGrid関数を呼び出すとき、uFlagsフィールドはどのフィールドを検索するべきかについて確認します。L_AnnSetSnapToGrid関数を呼び出すとき、uFlagsフィールドはどのフィールドを設定するべきかについて確認します。

グリッドスナップ機能が、正確にアノテーションオブジェクトを描画して、見つけて、位置合わせするのにユーザーを見込むために、アノテーションオートメーション設計モードで使われます。グリッドスナップが有効にされる(L_AnnSetSnapToGridを参照します)とき、点と行からなる格子図形はimageの上でオーバレイです。設計モードではアノテーションを作成するとき、各々のポイントは最も近いグリッド点にスナップします。このbeaviorは、作成している任意のアノテーションオブジェクトEXCEPTのために、フリーハンドのアノテーションを保持します。フリーハンドのアノテーションを作成するとき、これがフリーハンドの動作に悪影響を与えるので、個々のポイントは最も近いグリッド点にスナップしません。アノテーションオブジェクトの境界ボックスが最も近いグリッド点にカチッとしまるという点で、グリッドスナップ機能は設計モードではすべてのアノテーションオブジェクトタイプを移動することに影響を及ぼします。

オーバレイであるグリッドは、カラー(crGridColorを参照します)、格子間隔(uGridLengthを参照します)と電源周波数(uLineSpacingして参照します)によってカスタマイズされることができます。たとえば、20ピクセル間隔のドットパターンで構成された赤いグリッドと100ピクセル間隔の実線を表示するには、次のように設定します。

グリッドの行は、ANNLINE_NULLであるuLineStyleを設定することによって、完全に削除されることができます。グリッドの行は、任意のスタイル(uLineStyleを参照します)で描画されることができます。グリッドスナップ機能がグリッドがimageの上にかぶせられないでまだやるように、グリッド自体は非表示にすることができます(bShowGridを参照します)。反対に、グリッドは、グリッド-動作へのスナップ(L_AnnSetSnapToGrid関数を参照します)を無効にしている間、示されることができます(bShowGridを参照します)。

bAutoChangeGridLengthをtrueに設定すると、ズームしたときにグリッドの密度が変わります。エフェクトは、200%までズームするとき、ドットパターンの密度が二倍になるということです。400%までズームするとき、密度は再び二倍になります。密度を二倍にすることが意味がある限り、密度は200%、400%、800%、1600%などで二倍になります。言い換えると、100%で表示するとき画素密度を二倍にすることがピクセルが存在しない点を作成するならば、画素密度は変更しません。以下の例は、これを例示します。

サンプル1:uGridLengthは、10です
10が2で均一に割り切れるので、画素密度は200%で二倍になります。
10が4を均一に分けないので、画素密度は400%で二度と二倍になりません。

 サンプル2:uGridLengthは、20です
画素密度は200%で二倍になって、400%で再び二倍になります。
20が均一に8を分けないので、画素密度は800%で二度と二倍になりません。

 サンプル3:uGridLengthは、21です
21が素数であるので、画素密度は決して変更しません。

グリッドスナップ動作は、アノテーションを格納しないimageの一部を右クリックして、ポップアップメニューからグリッドオプションにスナップを選択することによって、アノテーションオートメーションモードで休みに向けられることができます。動作がアノテーションオートメーションモードでカスタマイズされることができるグリッドスナップ

  1. アノテーションがない画像部分を右クリックします。

  2. [デフォルトプロパティ]をポイントします。

  3. グリッドへのスナップ」をクリックすること...「メニューオプション

サンプル

このサンプル 
* グリッドスナップの現在の状態を取得します
* グリッドスナップのグリッドサイズを10、線の周期を10点間隔、線種を赤の実線に変更します。
* グリッドにスナップを有効にします

 

getLineStyleStringしている(L_UINT uLineStyle)L_TCHAR*

   TCHAR *pszLineStyle = TEXT();
   スイッチ(uLineStyle)
   {
   場合ANNLINE_SOLID:
      pszLineStyle = TEXT(「ANNLINE_SOLID」);
      ブレーク;
   場合ANNLINE_DASH:
      pszLineStyle = TEXT(「ANNLINE_DASH」);
      ブレーク;

   場合ANNLINE_DOT:
      pszLineStyle = TEXT(「ANNLINE_DOT」);
      ブレーク;

   場合ANNLINE_DASHDOT:
      pszLineStyle = TEXT(「ANNLINE_DASHDOT」);
      ブレーク;

   場合ANNLINE_DASHDOTDOT:
      pszLineStyle = TEXT(「ANNLINE_DASHDOTDOT」);
      ブレーク;

   場合ANNLINE_NULL:
      pszLineStyle = TEXT(「ANNLINE_NULL」);
      ブレーク;
   }

   戻りpszLineStyle;

 

L_VOID DisplaySnapToGrid(HANNOBJECT hAutomation、L_TCHAR *pszTitle)

#定義される(LEADTOOLS_V16_OR_LATER)ならば、
   L_TCHAR szMsg [200] ={0};
   ANNSNAPTOGRIDOPTIONSオプション={0};
   L_UINT uSnapToGridMode = ANN_SNAPTOGRID_OFF;
   options.uStructSize = sizeof(ANNSNAPTOGRIDOPTIONS);
   options.uFlags = ANNSNAPTOGRID_ALL;
   L_INT nRet = L_AnnGetSnapToGrid(hAutomation、&uSnapToGridMode、&options);
   (nRet == SUCCESS)
   {
      wsprintf(szMsg、TEXT(「uSnapToGridMode[%s]\ncrGridColor[0x%x]\nuGridLength[%d]\nuLineSpacing[%d]\nuLineStyle[%s]\nbEnableSnap[%s]\nbShowGrid[%s]\nbAutoChangeGridLength[%s]」)、
         uSnapToGridMode == ANN_SNAPTOGRID_OFF?テキスト(「ANN_SNAPTOGRID_OFF」):テキスト(「ANN_SNAPTOGRID_ON」)、
         options.crGridColor、
         options.uGridLength、
         options.uLineSpacing、
         getLineStyleStringする(options.uLineStyle)こと、
         options.bEnableSnap?テキスト(「True」):テキスト(「False」)、
         options.bShowGrid?テキスト(「True」):テキスト(「False」)、
         options.bAutoChangeGridLength?テキスト(「True」):テキスト(「False」)
         );

      MessageBox(NULL、szMsg、pszTitle、MB_OK);
   }

#endif


L_LTANNTEX_API L_INT SampleAnnSetSnapToGridExample(HANNOBJECT hAutomation)

   L_INT nRet = SUCCESS;
#定義される(LEADTOOLS_V16_OR_LATER)ならば、
   //グリッドスナップが大きな位置を占めることが有効にされることを確認する
   L_AnnSetOptions(hAutomation、OPTIONS_NEW_ALL、 | OPTIONS_NEW_SNAPTOGRID);

   //現在のグリッドスナップ設定を示す
   DisplaySnapToGrid(hAutomation、TEXT(「オリジナルの設定」));


   //10のグリッドサイズ、点の行あらゆる10行、実線レッドラインへのグリッドスナップ変更する、そして、それ有効にする、
   ANNSNAPTOGRIDOPTIONSオプション={0};
   options.uStructSize = sizeof(ANNSNAPTOGRIDOPTIONS);
   options.uFlags = ANNSNAPTOGRID_ALL;
   options.bAutoChangeGridLength = TRUE;
   options.bEnableSnap = TRUE;
   options.bShowGrid = TRUE;
   options.crGridColor = RGB(255,0,0);
   options.uGridLength = 10;
   options.uLineSpacing = 10;
   options.uLineStyle = ANNLINE_SOLID;
   options.nReserved = 0;

   nRet = L_AnnSetSnapToGrid(hAutomation、ANN_SNAPTOGRID_ON、&options);
   (nRet == SUCCESS)
   {
      DisplaySnapToGrid(hAutomation、TEXT(「新しい設定」));
   }

#endif
   戻りnRet;