IInkTransform
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
. (IInkTransform)
メソッド 22
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
変換を既定の状態である恒等変換にリセットします。
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
変換に平行移動を適用します。
| HorizontalComponent | FLOAT | in | 平行移動の水平方向成分。 |
| VerticalComponent | FLOAT | in | 平行移動の垂直方向成分。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| パラメーターに無効なポインターが含まれていました。 | |
| パラメーターまたはプロパティの型が予期しないものでした。 | |
| 引数が無効です。 | |
|
メソッド内で例外が発生しました。 |
InkTransform オブジェクトの回転量を変更する度単位の角度と、必要に応じて回転の中心点を変更します。
| Degrees | FLOAT | in | 時計回りに回転させる角度 (度単位)。省略可能な x および y 引数を指定しない場合、回転は原点を中心に行われます。原点は既定では、変換が適用されるインク収集領域の左上隅です。 |
| x | FLOAT | in | 省略可能。回転の中心となる点の x 座標 (インク空間座標)。既定値は 0 です。 |
| y | FLOAT | in | 省略可能。回転の中心となる点の y 座標 (インク空間座標)。既定値は 0 です。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
中心点は既定で原点になります。
変換に対して水平方向または垂直方向の反転 (鏡映) を実行します。
| Horizontally | VARIANT_BOOL | in | 水平方向に反転する場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE。 |
| Vertically | VARIANT_BOOL | in | 垂直方向に反転する場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
| VARIANT_BOOL のバリアントが無効です。 | |
|
メソッド内で例外が発生しました。 |
指定した水平方向および垂直方向の係数で InkTransform のせん断を調整します。
| HorizontalComponent | FLOAT | in | せん断の水平方向の係数。 |
| VerticalComponent | FLOAT | in | せん断の垂直方向の係数。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
このメソッドで適用される変換が純粋なせん断となるのは、いずれか一方のパラメーターが 0 の場合のみです。原点に置かれた四角形に適用した場合、shearY 係数が 0 のときは、下辺が四角形の高さに shearX を掛けた分だけ水平方向に移動します。shearX 係数が 0 のときは、右辺が四角形の幅に shearY を掛けた分だけ垂直方向に移動します。
指定した水平方向および垂直方向の係数を変換またはインクに適用します。 (IInkTransform.ScaleTransform)
| HorizontalMultiplier | FLOAT | in | 変換の水平方向の寸法を拡大縮小する係数。 |
| VerticalMultiplier | FLOAT | in | 変換の垂直方向の寸法を拡大縮小する係数。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
|
メソッド内で例外が発生しました。 |
解説(Remarks)
IInkStrokeDisp クラスおよび InkStrokes クラスの場合、このメソッドはストローク内の点を原点を基準にして拡大縮小します。したがって、HorizontalMultiplier パラメーターが 2.0 の場合、ストロークは幅が 2 倍になると同時に、原点からの水平方向の距離も 2 倍になります。ストロークの相対位置を制御するには、このメソッドを Move メソッドと組み合わせて使用してください。
InkTransform のメンバーデータを取得します。
| eM11 | FLOAT* | out | 1 行 1 列目の要素を指定する実数。 |
| eM12 | FLOAT* | out | 1 行 2 列目の要素を指定する実数。 |
| eM21 | FLOAT* | out | 2 行 1 列目の要素を指定する実数。 |
| eM22 | FLOAT* | out | 2 行 2 列目の要素を指定する実数。 |
| eDx | FLOAT* | out | 3 行 1 列目の要素を指定する実数。 |
| eDy | FLOAT* | out | 3 行 2 列目の要素を指定する実数。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
|
メソッド内で例外が発生しました。 |
| パラメーターに無効なポインターが含まれていました。 |
解説(Remarks)
InkTransform オブジェクトは 3x3 行列を表し、この行列はアフィン変換を表します。このオブジェクトは 3x3 行列の 9 個の数値のうち 6 個のみを保持します。これは、アフィン変換を表す 3x3 行列はすべて 3 列目が同じ (0, 0, 1) になるためです。
InkTransform のメンバーデータを変更します。
| eM11 | FLOAT | in | 1 行 1 列目の要素。 |
| eM12 | FLOAT | in | 1 行 2 列目の要素。 |
| eM21 | FLOAT | in | 2 行 1 列目の要素。 |
| eM22 | FLOAT | in | 2 行 2 列目の要素。 |
| eDx | FLOAT | in | 3 行 1 列目の要素。 |
| eDy | FLOAT | in | 3 行 2 列目の要素。 |
戻り値
このメソッドは次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 成功しました。 | |
|
メソッド内で例外が発生しました。 |
InkTransform オブジェクトが表すアフィン変換行列の 1 行 1 列目の要素を取得または設定します。 (Get)
| Value | FLOAT* | out | 変換行列の M11 要素の現在値を受け取るポインタである。 |
InkTransform オブジェクトが表すアフィン変換行列の 1 行 1 列目の要素を取得または設定します。 (Put)
| Value | FLOAT | in | 変換行列の M11 要素に設定する値を指定する。 |
InkTransform オブジェクトが表すアフィン変換行列の 1 行 2 列目の要素を取得または設定します。 (Get)
| Value | FLOAT* | out | 変換行列の M12 要素の現在値を受け取るポインタである。 |
InkTransform オブジェクトが表すアフィン変換行列の 1 行 2 列目の要素を取得または設定します。 (Put)
| Value | FLOAT | in | 変換行列の M12 要素に設定する値を指定する。 |
InkTransform オブジェクトが表すアフィン変換行列の 2 行 1 列目の要素を取得または設定します。 (Get)
| Value | FLOAT* | out | 変換行列の M21 要素の現在値を受け取るポインタである。 |
InkTransform オブジェクトが表すアフィン変換行列の 2 行 1 列目の要素を取得または設定します。 (Put)
| Value | FLOAT | in | 変換行列の M21 要素に設定する値を指定する。 |
InkTransform オブジェクトが表すアフィン変換行列の 2 行 2 列目の要素を取得または設定します。 (Get)
| Value | FLOAT* | out | 変換行列の M22 要素の現在値を受け取るポインタである。 |
InkTransform オブジェクトが表すアフィン変換行列の 2 行 2 列目の要素を取得または設定します。 (Put)
| Value | FLOAT | in | 変換行列の M22 要素に設定する値を指定する。 |
InkTransform オブジェクトが表すアフィン変換行列の 3 行 1 列目の要素を取得または設定します。 (Get)
| Value | FLOAT* | out | 変換行列の水平方向の平行移動量の現在値を受け取るポインタである。 |
InkTransform オブジェクトが表すアフィン変換行列の 3 行 1 列目の要素を取得または設定します。 (Put)
| Value | FLOAT | in | 変換行列の水平方向の平行移動量に設定する値を指定する。 |
InkTransform オブジェクトが表すアフィン変換行列の 3 行 2 列目の要素を取得または設定します。 (Get)
| Value | FLOAT* | out | 変換行列の垂直方向の平行移動量の現在値を受け取るポインタである。 |
InkTransform オブジェクトが表すアフィン変換行列の 3 行 2 列目の要素を取得または設定します。 (Put)
| Value | FLOAT | in | 変換行列の垂直方向の平行移動量に設定する値を指定する。 |
XFORM 構造体へのアクセスを取得または設定します。 (Get)
| XForm | XFORM* | out | 変換全体を表す XFORM 構造体を受け取るポインタである。 |
XFORM 構造体へのアクセスを取得または設定します。 (Put)
| XForm | XFORM | in | 設定する変換を表す XFORM 構造体である。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IInkTransform "{615F1D43-8703-4565-88E2-8201D2ECD7B7}" #usecom global IInkTransform IID_IInkTransform "{E3D5D93C-1663-4A78-A1A7-22375DFEBAEE}" #comfunc global IInkTransform_Reset 7 #comfunc global IInkTransform_Translate 8 float,float #comfunc global IInkTransform_Rotate 9 float,float,float #comfunc global IInkTransform_Reflect 10 int,int #comfunc global IInkTransform_Shear 11 float,float #comfunc global IInkTransform_ScaleTransform 12 float,float #comfunc global IInkTransform_GetTransform 13 var,var,var,var,var,var #comfunc global IInkTransform_SetTransform 14 float,float,float,float,float,float #comfunc global IInkTransform_get_eM11 15 var #comfunc global IInkTransform_put_eM11 16 float #comfunc global IInkTransform_get_eM12 17 var #comfunc global IInkTransform_put_eM12 18 float #comfunc global IInkTransform_get_eM21 19 var #comfunc global IInkTransform_put_eM21 20 float #comfunc global IInkTransform_get_eM22 21 var #comfunc global IInkTransform_put_eM22 22 float #comfunc global IInkTransform_get_eDx 23 var #comfunc global IInkTransform_put_eDx 24 float #comfunc global IInkTransform_get_eDy 25 var #comfunc global IInkTransform_put_eDy 26 float #comfunc global IInkTransform_get_Data 27 var #comfunc global IInkTransform_put_Data 28 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_IInkTransform "{615F1D43-8703-4565-88E2-8201D2ECD7B7}" #usecom global IInkTransform IID_IInkTransform "{E3D5D93C-1663-4A78-A1A7-22375DFEBAEE}" #comfunc global IInkTransform_Reset 7 #comfunc global IInkTransform_Translate 8 float,float #comfunc global IInkTransform_Rotate 9 float,float,float #comfunc global IInkTransform_Reflect 10 int,int #comfunc global IInkTransform_Shear 11 float,float #comfunc global IInkTransform_ScaleTransform 12 float,float #comfunc global IInkTransform_GetTransform 13 sptr,sptr,sptr,sptr,sptr,sptr #comfunc global IInkTransform_SetTransform 14 float,float,float,float,float,float #comfunc global IInkTransform_get_eM11 15 sptr #comfunc global IInkTransform_put_eM11 16 float #comfunc global IInkTransform_get_eM12 17 sptr #comfunc global IInkTransform_put_eM12 18 float #comfunc global IInkTransform_get_eM21 19 sptr #comfunc global IInkTransform_put_eM21 20 float #comfunc global IInkTransform_get_eM22 21 sptr #comfunc global IInkTransform_put_eM22 22 float #comfunc global IInkTransform_get_eDx 23 sptr #comfunc global IInkTransform_put_eDx 24 float #comfunc global IInkTransform_get_eDy 25 sptr #comfunc global IInkTransform_put_eDy 26 float #comfunc global IInkTransform_get_Data 27 sptr #comfunc global IInkTransform_put_Data 28 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。