Win32 API 日本語リファレンス
ホームUI.TabletPC › IInkTransform

IInkTransform

COMIDispatch (デュアル)
IDispatch を実装(デュアルインターフェース)。HSP では comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。
IID615f1d43-8703-4565-88e2-8201d2ecd7b7継承元IDispatch呼び出し名前(IDispatch) または vtbl自前メソッド開始 vtbl7

公式ドキュメント

. (IInkTransform)

メソッド 22

vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。

vtbl 7 HRESULT Reset()

変換を既定の状態である恒等変換にリセットします。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 8 HRESULT Translate(FLOAT HorizontalComponent, FLOAT VerticalComponent)

変換に平行移動を適用します。

HorizontalComponentFLOATin平行移動の水平方向成分。
VerticalComponentFLOATin平行移動の垂直方向成分。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_POINTER
パラメーターに無効なポインターが含まれていました。
E_UNEXPECTED
パラメーターまたはプロパティの型が予期しないものでした。
E_INVALIDARG
引数が無効です。
E_INK_EXCEPTION
メソッド内で例外が発生しました。
vtbl 9 HRESULT Rotate(FLOAT Degrees, FLOAT x, FLOAT y)

InkTransform オブジェクトの回転量を変更する度単位の角度と、必要に応じて回転の中心点を変更します。

DegreesFLOATin時計回りに回転させる角度 (度単位)。省略可能な x および y 引数を指定しない場合、回転は原点を中心に行われます。原点は既定では、変換が適用されるインク収集領域の左上隅です。
xFLOATin省略可能。回転の中心となる点の x 座標 (インク空間座標)。既定値は 0 です。
yFLOATin省略可能。回転の中心となる点の y 座標 (インク空間座標)。既定値は 0 です。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INK_EXCEPTION
メソッド内で例外が発生しました。

解説(Remarks)

中心点は既定で原点になります。

vtbl 10 HRESULT Reflect(VARIANT_BOOL Horizontally, VARIANT_BOOL Vertically)

変換に対して水平方向または垂直方向の反転 (鏡映) を実行します。

HorizontallyVARIANT_BOOLin水平方向に反転する場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE
VerticallyVARIANT_BOOLin垂直方向に反転する場合は VARIANT_TRUE、それ以外の場合は VARIANT_FALSE

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INVALIDARG
VARIANT_BOOL のバリアントが無効です。
E_INK_EXCEPTION
メソッド内で例外が発生しました。
vtbl 11 HRESULT Shear(FLOAT HorizontalComponent, FLOAT VerticalComponent)

指定した水平方向および垂直方向の係数で InkTransform のせん断を調整します。

HorizontalComponentFLOATinせん断の水平方向の係数。
VerticalComponentFLOATinせん断の垂直方向の係数。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INK_EXCEPTION
メソッド内で例外が発生しました。

解説(Remarks)

このメソッドで適用される変換が純粋なせん断となるのは、いずれか一方のパラメーターが 0 の場合のみです。原点に置かれた四角形に適用した場合、shearY 係数が 0 のときは、下辺が四角形の高さに shearX を掛けた分だけ水平方向に移動します。shearX 係数が 0 のときは、右辺が四角形の幅に shearY を掛けた分だけ垂直方向に移動します。

注意 両方のパラメーターが 0 以外の場合、結果を予測することは困難です。たとえば両方の係数が 1 の場合、この変換は平面全体を 1 本の直線に押し潰します。
vtbl 12 HRESULT ScaleTransform(FLOAT HorizontalMultiplier, FLOAT VerticalMultiplier)

指定した水平方向および垂直方向の係数を変換またはインクに適用します。 (IInkTransform.ScaleTransform)

HorizontalMultiplierFLOATin変換の水平方向の寸法を拡大縮小する係数。
VerticalMultiplierFLOATin変換の垂直方向の寸法を拡大縮小する係数。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INK_EXCEPTION
メソッド内で例外が発生しました。

解説(Remarks)

IInkStrokeDisp クラスおよび InkStrokes クラスの場合、このメソッドはストローク内の点を原点を基準にして拡大縮小します。したがって、HorizontalMultiplier パラメーターが 2.0 の場合、ストロークは幅が 2 倍になると同時に、原点からの水平方向の距離も 2 倍になります。ストロークの相対位置を制御するには、このメソッドを Move メソッドと組み合わせて使用してください。

vtbl 13 HRESULT GetTransform(FLOAT* eM11, FLOAT* eM12, FLOAT* eM21, FLOAT* eM22, FLOAT* eDx, FLOAT* eDy)

InkTransform のメンバーデータを取得します。

eM11FLOAT*out1 行 1 列目の要素を指定する実数。
eM12FLOAT*out1 行 2 列目の要素を指定する実数。
eM21FLOAT*out2 行 1 列目の要素を指定する実数。
eM22FLOAT*out2 行 2 列目の要素を指定する実数。
eDxFLOAT*out3 行 1 列目の要素を指定する実数。
eDyFLOAT*out3 行 2 列目の要素を指定する実数。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INK_EXCEPTION
メソッド内で例外が発生しました。
E_POINTER
パラメーターに無効なポインターが含まれていました。

解説(Remarks)

InkTransform オブジェクトは 3x3 行列を表し、この行列はアフィン変換を表します。このオブジェクトは 3x3 行列の 9 個の数値のうち 6 個のみを保持します。これは、アフィン変換を表す 3x3 行列はすべて 3 列目が同じ (0, 0, 1) になるためです。

vtbl 14 HRESULT SetTransform(FLOAT eM11, FLOAT eM12, FLOAT eM21, FLOAT eM22, FLOAT eDx, FLOAT eDy)

InkTransform のメンバーデータを変更します。

eM11FLOATin1 行 1 列目の要素。
eM12FLOATin1 行 2 列目の要素。
eM21FLOATin2 行 1 列目の要素。
eM22FLOATin2 行 2 列目の要素。
eDxFLOATin3 行 1 列目の要素。
eDyFLOATin3 行 2 列目の要素。

戻り値

このメソッドは次のいずれかの値を返すことがあります。

戻り値 説明
S_OK
成功しました。
E_INK_EXCEPTION
メソッド内で例外が発生しました。
vtbl 15 HRESULT get_eM11(FLOAT* Value)

InkTransform オブジェクトが表すアフィン変換行列の 1 行 1 列目の要素を取得または設定します。 (Get)

ValueFLOAT*out変換行列の M11 要素の現在値を受け取るポインタである。
vtbl 16 HRESULT put_eM11(FLOAT Value)

InkTransform オブジェクトが表すアフィン変換行列の 1 行 1 列目の要素を取得または設定します。 (Put)

ValueFLOATin変換行列の M11 要素に設定する値を指定する。
vtbl 17 HRESULT get_eM12(FLOAT* Value)

InkTransform オブジェクトが表すアフィン変換行列の 1 行 2 列目の要素を取得または設定します。 (Get)

ValueFLOAT*out変換行列の M12 要素の現在値を受け取るポインタである。
vtbl 18 HRESULT put_eM12(FLOAT Value)

InkTransform オブジェクトが表すアフィン変換行列の 1 行 2 列目の要素を取得または設定します。 (Put)

ValueFLOATin変換行列の M12 要素に設定する値を指定する。
vtbl 19 HRESULT get_eM21(FLOAT* Value)

InkTransform オブジェクトが表すアフィン変換行列の 2 行 1 列目の要素を取得または設定します。 (Get)

ValueFLOAT*out変換行列の M21 要素の現在値を受け取るポインタである。
vtbl 20 HRESULT put_eM21(FLOAT Value)

InkTransform オブジェクトが表すアフィン変換行列の 2 行 1 列目の要素を取得または設定します。 (Put)

ValueFLOATin変換行列の M21 要素に設定する値を指定する。
vtbl 21 HRESULT get_eM22(FLOAT* Value)

InkTransform オブジェクトが表すアフィン変換行列の 2 行 2 列目の要素を取得または設定します。 (Get)

ValueFLOAT*out変換行列の M22 要素の現在値を受け取るポインタである。
vtbl 22 HRESULT put_eM22(FLOAT Value)

InkTransform オブジェクトが表すアフィン変換行列の 2 行 2 列目の要素を取得または設定します。 (Put)

ValueFLOATin変換行列の M22 要素に設定する値を指定する。
vtbl 23 HRESULT get_eDx(FLOAT* Value)

InkTransform オブジェクトが表すアフィン変換行列の 3 行 1 列目の要素を取得または設定します。 (Get)

ValueFLOAT*out変換行列の水平方向の平行移動量の現在値を受け取るポインタである。
vtbl 24 HRESULT put_eDx(FLOAT Value)

InkTransform オブジェクトが表すアフィン変換行列の 3 行 1 列目の要素を取得または設定します。 (Put)

ValueFLOATin変換行列の水平方向の平行移動量に設定する値を指定する。
vtbl 25 HRESULT get_eDy(FLOAT* Value)

InkTransform オブジェクトが表すアフィン変換行列の 3 行 2 列目の要素を取得または設定します。 (Get)

ValueFLOAT*out変換行列の垂直方向の平行移動量の現在値を受け取るポインタである。
vtbl 26 HRESULT put_eDy(FLOAT Value)

InkTransform オブジェクトが表すアフィン変換行列の 3 行 2 列目の要素を取得または設定します。 (Put)

ValueFLOATin変換行列の垂直方向の平行移動量に設定する値を指定する。
vtbl 27 HRESULT get_Data(XFORM* XForm)

XFORM 構造体へのアクセスを取得または設定します。 (Get)

XFormXFORM*out変換全体を表す XFORM 構造体を受け取るポインタである。
vtbl 28 HRESULT put_Data(XFORM XForm)

XFORM 構造体へのアクセスを取得または設定します。 (Put)

XFormXFORMin設定する変換を表す XFORM 構造体である。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 不要)。