スケール効果
この効果を使用して、イメージをスケールアップまたはスケールダウンします。 この効果には、最近傍、線形、立方、多サンプル線形、異方性、高品質の 3 次の 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 で、単位なしであり、正または 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 です。 |
切れ味 D2D1_SCALE_PROP_SHARPNESS |
高品質の三次補間モードでは、スケーリング フィルターのシャープネス レベルが 0 から 1 の間の浮動体になります。 値は単位なしです。 シャープネスを使用して、イメージをスケールダウンするときにイメージの品質を調整できます。 シャープネス係数はカーネルの形状に影響します。 シャープネス係数が高いほど、カーネルは小さくなります。 注: このプロパティは、高品質の三次補間モードにのみ影響します。 型は FLOAT です。 既定値は 0.0f です。 |
InterpolationMode 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 個のサンプル 3 次カーネルを使用します。 このモードでは最も処理時間が長くなりますが、より高品質の画像が出力されます。 |
D2D1_SCALE_INTERPOLATION_MODE_MULTI_SAMPLE_LINEAR | 1 つのピクセル内で 4 つの線形サンプルを使用して、優れたエッジアンチエイリアシングを行います。 このモードは、ピクセル数が少ない画像で少量スケールダウンする場合に適しています。 |
D2D1_SCALE_INTERPOLATION_MODE_ANISOTROPIC | 異方性フィルタリングを使用して、ビットマップの変換された形状に従ってパターンをサンプリングします。 |
D2D1_SCALE_INTERPOLATION_MODE_HIGH_QUALITY_CUBIC | 変換マトリックスにダウンスケールが関係している場合は、可変サイズの高品質の 3 次カーネルを使用して、イメージの事前スケールを実行します。 次に、最終的な出力に 3 次補間モードを使用します。 |
手記
モードを選択しない場合、効果は既定でD2D1_SCALE_INTERPOLATION_MODE_LINEARされます。
手記
異方性モードではスケーリング時にミップマップが生成されますが、この効果に入力される効果に対して Cached プロパティを true に設定すると、十分に小さい画像に対して毎回ミップマップが生成されることはありません。
出力ビットマップ
出力ビットマップの場所とサイズは、指定した倍率と中心点によって異なります。
出力ビットマップのサイズは、次の式を使用して計算できます。
- BitmapSizex(Pixels)=Scalex*Original Bitmap Sizex (DIP)*(UserDPI/96)
BitmapSizey(Pixels)=Scaley*Original Bitmap Sizey (DIP)*(UserDPI/96)
この効果は、ピクセルの分数を最も近いピクセル全体に丸めます。
ビットマップの位置は(0,0)、または中心点プロパティの値です。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
サポートされている最小サーバー | Windows 7 用 Windows 8 およびプラットフォーム更新プログラム [デスクトップ アプリ |[Windows ストア アプリ] |
ヘッダ | d2d1effects.h |
図書館 | d2d1.lib、dxguid.lib |