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

IInkDrawingAttributes

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

公式ドキュメント

. (IInkDrawingAttributes)

メソッド 20

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

vtbl 7 HRESULT get_Color(INT* CurrentColor)

この InkDrawingAttributes オブジェクトで描画されるインク (手書き) の色を取得または設定します。(Get)

CurrentColorINT*out現在のインクの色を RGB 値(整数)として受け取るポインタである。

解説(Remarks)

ハイコントラストモードでは、Color プロパティの設定にかかわらず、インクは常にシステムの色設定 (COLOR_WINDOWTEXT) で表示されます。ただし、インクの実際の色は常に設定された色として保存され、設定されていない場合は既定の色 (BLACK) が保存されます。たとえば、Color プロパティに RED を設定した場合、ハイコントラストモードのユーザーにはシステムの色でインクが表示されますが、ハイコントラストモードではないユーザーには設定された色である RED でインクが描画されて表示されます。この機能により、ハイコントラストモードのユーザーは、実際のストロークの色を変更することなく、システム設定の色でインクを表示できます。

つまり、既定ではハイコントラストモードのときにすべてのインクが 1 つの色にマッピングされます。この既定の色マッピング動作を無効にして独自の動作を実装するには、インクコレクターの SupportHighContrastInk プロパティを使用します。

ハイコントラストモードを実際に有効にするには、インクコレクターの AutoRedraw プロパティを TRUE に設定する必要があります (これは、ウィンドウが無効化されたときにインクが再描画されることを意味します)。AutoRedraw プロパティを FALSE に設定した場合、Tablet PC アプリケーションプログラミングインターフェイス (API) はハイコントラストモードをサポートしません。

vtbl 8 HRESULT put_Color(INT NewColor)

この InkDrawingAttributes オブジェクトで描画されるインク (手書き) の色を取得または設定します。(Put)

NewColorINTinインクに設定する色を RGB 値(整数)で指定する。

解説(Remarks)

ハイコントラストモードでは、Color プロパティの設定にかかわらず、インクは常にシステムの色設定 (COLOR_WINDOWTEXT) で表示されます。ただし、インクの実際の色は常に設定された色として保存され、設定されていない場合は既定の色 (BLACK) が保存されます。たとえば、Color プロパティに RED を設定した場合、ハイコントラストモードのユーザーにはシステムの色でインクが表示されますが、ハイコントラストモードではないユーザーには設定された色である RED でインクが描画されて表示されます。この機能により、ハイコントラストモードのユーザーは、実際のストロークの色を変更することなく、システム設定の色でインクを表示できます。

つまり、既定ではハイコントラストモードのときにすべてのインクが 1 つの色にマッピングされます。この既定の色マッピング動作を無効にして独自の動作を実装するには、インクコレクターの SupportHighContrastInk プロパティを使用します。

ハイコントラストモードを実際に有効にするには、インクコレクターの AutoRedraw プロパティを TRUE に設定する必要があります (これは、ウィンドウが無効化されたときにインクが再描画されることを意味します)。AutoRedraw プロパティを FALSE に設定した場合、Tablet PC アプリケーションプログラミングインターフェイス (API) はハイコントラストモードをサポートしません。

vtbl 9 HRESULT get_Width(FLOAT* CurrentWidth)

インクを描画するときのペン先の y 軸方向のサイズ (幅) を取得または設定します。(Get)

CurrentWidthFLOAT*out現在のペン幅をインク空間単位(HIMETRIC)で受け取るポインタである。

解説(Remarks)

タブレットがペンの筆圧を報告する場合 (IgnorePressure プロパティが false の場合)、インクの実際の幅は描画面に加えられた筆圧の大きさに応じて変化します。最大の筆圧が加えられたときの幅は Width プロパティの値の 150% になり、最小の筆圧のときの幅は Width プロパティの値の 50% になります。既定ではこのプロパティは true に設定されており、ペンからの筆圧が報告されます。筆圧を報告しない (インクの幅が変化しない) ように指定するには、IgnorePressure プロパティを true に設定します。

精度は HIMETRIC 単位の 1000 分の 1 (小数点以下 3 桁) に制限されます。たとえば、2.0006 という値を指定した場合、最も精密な測定値は 2.001 になります。

vtbl 10 HRESULT put_Width(FLOAT NewWidth)

インクを描画するときのペン先の y 軸方向のサイズ (幅) を取得または設定します。(Put)

NewWidthFLOATin設定するペン幅をインク空間単位(HIMETRIC)で指定する。

解説(Remarks)

タブレットがペンの筆圧を報告する場合 (IgnorePressure プロパティが false の場合)、インクの実際の幅は描画面に加えられた筆圧の大きさに応じて変化します。最大の筆圧が加えられたときの幅は Width プロパティの値の 150% になり、最小の筆圧のときの幅は Width プロパティの値の 50% になります。既定ではこのプロパティは true に設定されており、ペンからの筆圧が報告されます。筆圧を報告しない (インクの幅が変化しない) ように指定するには、IgnorePressure プロパティを true に設定します。

精度は HIMETRIC 単位の 1000 分の 1 (小数点以下 3 桁) に制限されます。たとえば、2.0006 という値を指定した場合、最も精密な測定値は 2.001 になります。

vtbl 11 HRESULT get_Height(FLOAT* CurrentHeight)

InkDrawingAttributes オブジェクトでインクを描画するときのペンの高さを取得または設定します。(Get)

CurrentHeightFLOAT*out現在のペン高さをインク空間単位(HIMETRIC)で受け取るポインタである。

解説(Remarks)

このプロパティは Rectangle のペン先にのみ適用されます。値は矩形の辺の高さを表します。Ball のペン先を使用している場合、ペン先の高さは Width プロパティと等しくなり、Height プロパティは無視されます。

精度は 1/1000 (小数点以下 3 桁) に制限されます。たとえば、2.0006 という値を指定した場合、最も精密な測定値は 2.001 になります。

vtbl 12 HRESULT put_Height(FLOAT NewHeight)

InkDrawingAttributes オブジェクトでインクを描画するときのペンの高さを取得または設定します。(Put)

NewHeightFLOATin設定するペン高さをインク空間単位(HIMETRIC)で指定する。

解説(Remarks)

このプロパティは Rectangle のペン先にのみ適用されます。値は矩形の辺の高さを表します。Ball のペン先を使用している場合、ペン先の高さは Width プロパティと等しくなり、Height プロパティは無視されます。

精度は 1/1000 (小数点以下 3 桁) に制限されます。たとえば、2.0006 という値を指定した場合、最も精密な測定値は 2.001 になります。

vtbl 13 HRESULT get_FitToCurve(VARIANT_BOOL* Flag)

インクの描画にベジエスムージングを使用するかどうかを指定する値を取得または設定します。(Get)

FlagVARIANT_BOOL*outストロークにベジエ平滑化を適用するかどうかの現在の設定を受け取る VARIANT_BOOL へのポインタである。

解説(Remarks)

ベジエスムージングでは、インクをペンのサンプル点間を結ぶ直線ではなく、一連の曲線として描画します。インクを一連の曲線として描画すると、特に書き手の筆跡が安定していない場合に、インクを滑らかにするのに役立ちます。

ストロークの収集中にこのプロパティを設定した場合、インクは再描画または更新されるまで一連の曲線として描画されません。

vtbl 14 HRESULT put_FitToCurve(VARIANT_BOOL Flag)

インクの描画にベジエスムージングを使用するかどうかを指定する値を取得または設定します。(Put)

FlagVARIANT_BOOLinストロークにベジエ平滑化を適用するかどうかを指定する VARIANT_BOOL である。

解説(Remarks)

ベジエスムージングでは、インクをペンのサンプル点間を結ぶ直線ではなく、一連の曲線として描画します。インクを一連の曲線として描画すると、特に書き手の筆跡が安定していない場合に、インクを滑らかにするのに役立ちます。

ストロークの収集中にこのプロパティを設定した場合、インクは再描画または更新されるまで一連の曲線として描画されません。

vtbl 15 HRESULT get_IgnorePressure(VARIANT_BOOL* Flag)

タブレット面へのペン先の筆圧が強くなるにつれて、描画されるインクが自動的に太くなるかどうかを指定する値を取得または設定します。(Get)

FlagVARIANT_BOOL*out筆圧を無視して描画するかどうかの現在の設定を受け取る VARIANT_BOOL へのポインタである。

解説(Remarks)

ペン先への筆圧が強いほど、多くのインクが描画されます。この効果を発生させたくない場合は、このプロパティに VARIANT_TRUE を設定します。

vtbl 16 HRESULT put_IgnorePressure(VARIANT_BOOL Flag)

タブレット面へのペン先の筆圧が強くなるにつれて、描画されるインクが自動的に太くなるかどうかを指定する値を取得または設定します。(Put)

FlagVARIANT_BOOLin筆圧を無視して描画するかどうかを指定する VARIANT_BOOL である。

解説(Remarks)

ペン先への筆圧が強いほど、多くのインクが描画されます。この効果を発生させたくない場合は、このプロパティに VARIANT_TRUE を設定します。

vtbl 17 HRESULT get_AntiAliased(VARIANT_BOOL* Flag)

ストロークをアンチエイリアス処理するかどうかを示す値を取得または設定します。(Get)

FlagVARIANT_BOOL*outインクをアンチエイリアス処理して描画するかどうかの現在の設定を受け取る VARIANT_BOOL へのポインタである。

解説(Remarks)

ストロークがアンチエイリアス処理されると、インクの縁に沿って前景色と背景色が混合され、見た目の滑らかさが向上します。

アンチエイリアス処理は、特に解像度の低いディスプレイでインクをより滑らかで鮮明に見せ、描画の品質を向上させます。ただし、アンチエイリアス処理には追加の処理負荷が伴うため、適切に判断して使用してください。

vtbl 18 HRESULT put_AntiAliased(VARIANT_BOOL Flag)

ストロークをアンチエイリアス処理するかどうかを示す値を取得または設定します。(Put)

FlagVARIANT_BOOLinインクをアンチエイリアス処理して描画するかどうかを指定する VARIANT_BOOL である。

解説(Remarks)

ストロークがアンチエイリアス処理されると、インクの縁に沿って前景色と背景色が混合され、見た目の滑らかさが向上します。

アンチエイリアス処理は、特に解像度の低いディスプレイでインクをより滑らかで鮮明に見せ、描画の品質を向上させます。ただし、アンチエイリアス処理には追加の処理負荷が伴うため、適切に判断して使用してください。

vtbl 19 HRESULT get_Transparency(INT* CurrentTransparency)

インクの透明度を示す値を取得または設定します。(Get)

CurrentTransparencyINT*out現在の透明度(0=不透明〜255=完全透明)を受け取るポインタである。

解説(Remarks)

注意 透明の描画効果は、動的描画と静的描画とで異なる場合があります。動的描画では、たとえば DynamicRendering プロパティの場合のように、IInkStrokeDisp オブジェクトは描画されると同時にレンダリングされます。静的描画では、InkRenderer オブジェクトの Draw メソッドを使用して IInkStrokeDisp オブジェクトを描画します。
vtbl 20 HRESULT put_Transparency(INT NewTransparency)

インクの透明度を示す値を取得または設定します。(Put)

NewTransparencyINTin設定する透明度(0=不透明〜255=完全透明)を指定する。

解説(Remarks)

注意 透明の描画効果は、動的描画と静的描画とで異なる場合があります。動的描画では、たとえば DynamicRendering プロパティの場合のように、IInkStrokeDisp オブジェクトは描画されると同時にレンダリングされます。静的描画では、InkRenderer オブジェクトの Draw メソッドを使用して IInkStrokeDisp オブジェクトを描画します。
vtbl 21 HRESULT get_RasterOperation(InkRasterOperation* CurrentRasterOperation)

ペンと背景の色がどのように相互作用するかを定義する値を取得または設定します。(Get)

CurrentRasterOperationInkRasterOperation*outインク描画時に適用される現在のラスター演算を受け取る InkRasterOperation へのポインタである。

解説(Remarks)

InkRasterOperation 列挙体は、描画されたインクに対してラスター操作を実行するための値を定義します。たとえば、減算による透明化を行う場合は、ラスター値に MaskPen を設定します。

使用可能なラスター操作の完全な一覧については、InkRasterOperation 列挙型を参照してください。

注意 多くのプリンターは、使用可能なラスター操作の多くをサポートしていません。そのため、表示される色と印刷される色が異なる場合があります。これはプリンタードライバーまたはプリンターハードウェアに直接起因します。インクにさまざまなラスター操作を設定したときに、どのプリンターが正しい出力を生成できるかを判断するには、実際に試してみる必要がある場合があります。
RasterOperation プロパティに InkRasterOperation.IRO_CopyPen 以外の値を設定した場合、アンチエイリアス処理、スムージング、透明度、筆圧といったすべての描画属性は無視されます。
vtbl 22 HRESULT put_RasterOperation(InkRasterOperation NewRasterOperation)

ペンと背景の色がどのように相互作用するかを定義する値を取得または設定します。(Put)

NewRasterOperationInkRasterOperationinインク描画時に適用するラスター演算を指定する InkRasterOperation 値である。

解説(Remarks)

InkRasterOperation 列挙体は、描画されたインクに対してラスター操作を実行するための値を定義します。たとえば、減算による透明化を行う場合は、ラスター値に MaskPen を設定します。

使用可能なラスター操作の完全な一覧については、InkRasterOperation 列挙型を参照してください。

注意 多くのプリンターは、使用可能なラスター操作の多くをサポートしていません。そのため、表示される色と印刷される色が異なる場合があります。これはプリンタードライバーまたはプリンターハードウェアに直接起因します。インクにさまざまなラスター操作を設定したときに、どのプリンターが正しい出力を生成できるかを判断するには、実際に試してみる必要がある場合があります。
RasterOperation プロパティに InkRasterOperation.IRO_CopyPen 以外の値を設定した場合、アンチエイリアス処理、スムージング、透明度、筆圧といったすべての描画属性は無視されます。
vtbl 23 HRESULT get_PenTip(InkPenTip* CurrentPenTip)

この InkDrawingAttributes オブジェクトに関連付けられたインクを描画するときに、どのペン先を使用するかを示す値を取得または設定します。(Get)

CurrentPenTipInkPenTip*out現在のペン先形状(円形または矩形)を受け取る InkPenTip へのポインタである。

解説(Remarks)

使用可能なペン先の完全な一覧については、InkPenTip 列挙体を参照してください。

このプロパティに InkPenTip.IPT_Ball を設定した場合、Height プロパティは無視されます。

正方形のペン先を作成するには、PenTip プロパティに InkPenTip.IPT_Rectangle を設定します。次に、Height プロパティを Width プロパティと同じ値に設定します。

vtbl 24 HRESULT put_PenTip(InkPenTip NewPenTip)

この InkDrawingAttributes オブジェクトに関連付けられたインクを描画するときに、どのペン先を使用するかを示す値を取得または設定します。(Put)

NewPenTipInkPenTipin設定するペン先形状(円形または矩形)を指定する InkPenTip 値である。

解説(Remarks)

使用可能なペン先の完全な一覧については、InkPenTip 列挙体を参照してください。

このプロパティに InkPenTip.IPT_Ball を設定した場合、Height プロパティは無視されます。

正方形のペン先を作成するには、PenTip プロパティに InkPenTip.IPT_Rectangle を設定します。次に、Height プロパティを Width プロパティと同じ値に設定します。

vtbl 25 HRESULT get_ExtendedProperties(IInkExtendedProperties** Properties)

オブジェクトに格納されているアプリケーション定義データのコレクションを取得します。(IInkDrawingAttributes.get_ExtendedProperties)

PropertiesIInkExtendedProperties**outこの描画属性に関連付けられた拡張プロパティのコレクションを受け取るポインタである。

解説(Remarks)

アプリケーションは ExtendedProperties プロパティを使用して、オブジェクトに格納されているカスタムデータにアクセスできます。このカスタムデータは、オブジェクトとともに自動的にシリアル化されます。

vtbl 26 HRESULT Clone(IInkDrawingAttributes** DrawingAttributes)

InkDrawingAttributes オブジェクトの複製を作成します。

DrawingAttributesIInkDrawingAttributes**outこのメソッドが返るときに、新しく作成された InkDrawingAttributes オブジェクトへのポインターが格納されます。

戻り値

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

リターンコード 説明
S_OK
成功しました。
E_OUTOFMEMORY
操作を完了するためのメモリを割り当てられません。
E_FAIL
不特定のエラーが発生しました。
E_POINTER
パラメーターに無効なポインターが含まれていました。
E_INK_EXCEPTION
メソッド内部で例外が発生しました。
REGDB_CLASSNOTREG
InkDisp オブジェクトが登録されていません。
E_UNEXPECTED
予期しないパラメーターまたはプロパティの型です。

解説(Remarks)

Clone メソッドは、InkDispInkDrawingAttributesInkRecognizerContext の各オブジェクトに対して定義されています。Clone メソッドは、元のオブジェクトの完全なコピーを返します。

ほとんどの場合、複製されたオブジェクトは元のオブジェクトの完全なコピーですが、2 つのオブジェクトの間に関連は存在しません。これに対する例外の詳細については、このトピックの解説セクションを参照してください。

InkDrawingAttributes オブジェクト: 通常は、描画属性のマスターコピーを複製し、1 つ以上の属性を変更したうえで、ModifyDrawingAttributes メソッドを呼び出して、変更した描画属性を使用します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IInkDrawingAttributes "{BF519B75-0A15-4623-ADC9-C00D436A8092}"
#usecom global IInkDrawingAttributes IID_IInkDrawingAttributes "{D8BF32A2-05A5-44C3-B3AA-5E80AC7D2576}"
#comfunc global IInkDrawingAttributes_get_Color               7 var
#comfunc global IInkDrawingAttributes_put_Color               8 int
#comfunc global IInkDrawingAttributes_get_Width               9 var
#comfunc global IInkDrawingAttributes_put_Width               10 float
#comfunc global IInkDrawingAttributes_get_Height              11 var
#comfunc global IInkDrawingAttributes_put_Height              12 float
#comfunc global IInkDrawingAttributes_get_FitToCurve          13 var
#comfunc global IInkDrawingAttributes_put_FitToCurve          14 int
#comfunc global IInkDrawingAttributes_get_IgnorePressure      15 var
#comfunc global IInkDrawingAttributes_put_IgnorePressure      16 int
#comfunc global IInkDrawingAttributes_get_AntiAliased         17 var
#comfunc global IInkDrawingAttributes_put_AntiAliased         18 int
#comfunc global IInkDrawingAttributes_get_Transparency        19 var
#comfunc global IInkDrawingAttributes_put_Transparency        20 int
#comfunc global IInkDrawingAttributes_get_RasterOperation     21 var
#comfunc global IInkDrawingAttributes_put_RasterOperation     22 int
#comfunc global IInkDrawingAttributes_get_PenTip              23 var
#comfunc global IInkDrawingAttributes_put_PenTip              24 int
#comfunc global IInkDrawingAttributes_get_ExtendedProperties  25 sptr
#comfunc global IInkDrawingAttributes_Clone                   26 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。
; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。