Я хотел бы знать, как обрезать изображение в directx с помощью круга.Не имеет значения, какой будет обрезка (с геометрией или другим изображением).
Microsoft::WRL::ComPtr<ID2D1Effect> hueRotationEffect;
Microsoft::WRL::ComPtr<ID2D1Effect> shadowEffect;
Microsoft::WRL::ComPtr<ID2D1Effect> affineTransformEffect;
Microsoft::WRL::ComPtr<ID2D1Effect> compositeEffect;
Microsoft::WRL::ComPtr<ID2D1EllipseGeometry> unitEllipseGeometry;
ID2D1Factory* factory;
context2->CreateEffect(CLSID_D2D1Shadow, &shadowEffect);
context2->CreateEffect(CLSID_D2D12DAffineTransform, &affineTransformEffect);
context2->CreateEffect(CLSID_D2D1Composite, &compositeEffect);
context2->CreateEffect(CLSID_D2D1HueRotation, &hueRotationEffect);
//Effect of hue
hueRotationEffect->SetInput(1, tetronimoBitmap.Get());
hueRotationEffect->SetValue(D2D1_HUEROTATION_PROP_ANGLE, 270.0f);
//Effect of shader
shadowEffect->SetInput(0, tetronimoBitmap.Get());
affineTransformEffect->SetInputEffect(0, shadowEffect.Get());
D2D1_MATRIX_3X2_F matrix = D2D1::Matrix3x2F::Translation(20, 20);
affineTransformEffect->SetValue(D2D1_2DAFFINETRANSFORM_PROP_TRANSFORM_MATRIX, matrix);
compositeEffect->SetInput(1, tetronimoBitmap.Get());
compositeEffect->SetInputEffect(0, affineTransformEffect.Get());
hueRotationEffect->SetInputEffect(0, compositeEffect.Get());
//rectImage = { width,height, tetronimoBitmap->GetSize().width, tetronimoBitmap->GetSize().height };
context2->DrawImage(hueRotationEffect.Get(), D2D1::Point2F(100, 100));