スケールの効果

この効果を使用して、イメージをスケールアップまたはスケールダウンします。 この効果には、最も近い隣人、線形、立方、多サンプル線形、異方性、高品質の立方体の 6 つのスケーリング モードがあります。

この効果の CLSID はCLSID_D2D1Scale。

画像の例

次の使用例は、入力の 2 倍に拡大し、元のサイズにトリミングするスケール効果を示しています。

変更前
効果の前の画像。
クリック後
変換後のイメージ。
ComPtr<ID2D1Effect> scaleEffect;
m_d2dContext->CreateEffect(CLSID_D2D1Scale, &scaleEffect);

scaleEffect->SetInput(0, bitmap);

scaleEffect->SetValue(D2D1_SCALE_PROP_CENTER_POINT, D2D1::Vector2F(256.0f, 192.0f));
scaleEffect->SetValue(D2D1_SCALE_PROP_SCALE, D2D1::Vector2F(2.0f, 2.0f));

m_d2dContext->BeginDraw();
m_d2dContext->DrawImage(scaleEffect.Get());
m_d2dContext->EndDraw();

Effect プロパティ

表示名とインデックス列挙 [説明]
スケール
D2D1_SCALE_PROP_SCALE
入力サイズに対する出力サイズの比率としての X 方向と Y 方向のスケール量。 このプロパティは、次のようにD2D1_VECTOR_2Fdefinedされます(X スケール、Y スケール)。 スケールの量は FLOAT、unitless で、正または 0 である必要があります。
型がD2D1_VECTOR_2F。
既定値は {1.0f, 1.0f} です。
CenterPoint
D2D1_SCALE_PROP_CENTER_POINT
イメージの拡大縮小の中心点。 このプロパティは、次のように定義D2D1_VECTOR_2Fです (ポイント X、ポイント Y)。 単位は DIP 単位です。
左上隅以外の点を中心に拡大縮小するには、中心点プロパティを使用します。
型がD2D1_VECTOR_2F。
既定値は {0.0f, 0.0f} です。
BorderMode
D2D1_SCALE_PROP_BORDER_MODE
イメージの境界線 (ソフトまたはハード) の計算に使用されるモード。 詳細については、「 罫線モード 」を参照してください。
型はD2D1_BORDER_MODE。
既定値は D2D1_BORDER_MODE_SOFT です。
Sharpness
D2D1_SCALE_PROP_SHARPNESS
高品質の立方補間モードでは、スケーリングフィルターのシャープネスレベルは0から1の間のフロートとして使用されます。 値は単位なしです。 シャープネスを使用すると、イメージを縮小するときにイメージの品質を調整できます。
シャープネス係数はカーネルの形状に影響します。 シャープネス係数が高いほど、カーネルは小さくなります。
メモ: このプロパティは、高品質の立方補間モードにのみ影響します。
型は FLOAT です。
既定値は 0.0f です。
補間モード
D2D1_SCALE_PROP_INTERPOLATION_MODE
効果がイメージのスケーリングに使用する補間モード。 品質と速度の範囲の6スケールモードがあります。 詳細については、「 補間モード 」を参照してください。
型がD2D1_SCALE_INTERPOLATION_MODE。
既定値は D2D1_SCALE_INTERPOLATION_MODE_LINEAR です。

罫線モード

名前 説明
D2D1_BORDER_MODE_SOFT この効果は、畳み込みカーネルを適用するときに、入力境界外のサンプルに対して、入力イメージを透明な黒ピクセルで埋め込みます。 これにより、イメージのソフト エッジが作成され、プロセスでカーネルのサイズによって出力ビットマップが拡張されます。
D2D1_BORDER_MODE_HARD この効果は、入力境界外のサンプルのミラー型の境界線変換を使用して入力イメージを拡張します。 出力ビットマップのサイズは、入力ビットマップのサイズと同じです。

`

補間モード

列挙 説明
D2D1_SCALE_INTERPOLATION_MODE_NEAREST_NEIGHBOR 最も近い単一点をサンプリングし、その点を使用します。 このモードでは処理時間は短くなりますが、最も低品質の画像が出力されます。
D2D1_SCALE_INTERPOLATION_MODE_LINEAR 4 点サンプルと線形補間を使用します。 このモードでは、最も近い近隣モードよりも処理時間が長くなりますが、より高品質の画像が出力されます。
D2D1_SCALE_INTERPOLATION_MODE_CUBIC 補間に 16 個のサンプル立方カーネルを使用します。 このモードでは最も処理時間が長くなりますが、より高品質の画像が出力されます。
D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR 1 つのピクセル内で 4 つの線形サンプルを使用して、優れたエッジアンチエイリアシングを行います。 このモードは、ピクセル数の少ない画像で少量のスケールダウンに適しています。
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC 異方性フィルタリングを使用して、ビットマップの変換された形状に従ってパターンをサンプリングします。
D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC 変換マトリックスにダウンスケールが関係している場合は、可変サイズの高品質キュービック カーネルを使用して、イメージの事前ダウンスケールを実行します。 次に、最終的な出力に 3 次補間モードを使用します。

注意

モードを選択しない場合、効果の既定値は D2D1_SCALE_INTERPOLATION_MODE_LINEAR になります。

注意

異方性モードではスケーリング時にミップマップが生成されますが、この効果に入力される効果に対して Cached プロパティを true に設定すると、十分に小さい画像に対して毎回ミップマップが生成されることはありません。

出力ビットマップ

出力ビットマップの場所とサイズは、指定したスケール ファクターと中心点によって異なります。

次の式を使用して、出力ビットマップのサイズを計算できます。

BitmapSizex(Pixels)=Scalex*Original Bitmap Sizex (DIPs)*(UserDPI/96)
BitmapSizey(Pixels)=Scaley*Original Bitmap Sizey (DIP)*(UserDPI/96)

この効果は、ピクセルの分数を最も近いピクセル全体に切り上げます。

ビットマップの位置は(0,0)、または中心点プロパティの値です。

必要条件

要件
サポートされている最小のクライアント Windows 8 および Windows 7 用プラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ]
サポートされている最小のサーバー Windows 8 および Windows 7 用プラットフォーム更新プログラム [デスクトップ アプリ |Windows ストア アプリ]
ヘッダー d2d1effects.h
ライブラリ d2d1.lib、dxguid.lib

ID2D1Effect