Direct2d ID2D1GradientStopCollection1 - как создать - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать градиент с Direct2D 1.1.

В частности, я пытаюсь создать ID2D1GradientStopCollection1.

мой код:

ID2D1GradientStopCollection1* native = nullptr;

hr = context2_->CreateGradientStopCollection(
    (D2D1_GRADIENT_STOP*)gradientStops,
    gradientStopsCount,
    D2D1_COLOR_SPACE_SRGB,
    D2D1_COLOR_SPACE_SRGB,
    D2D1_BUFFER_PRECISION_UNKNOWN,
    D2D1_EXTEND_MODE_CLAMP,
    D2D1_COLOR_INTERPOLATION_MODE_STRAIGHT,
    &native
);

// hr returns 0x8899000a : A call to this method is invalid.

Примечание: context2_ имеет тип: ID2D1DeviceContext *

Выполнение этого оператора завершается неудачно.Код ошибки, возвращаемый в hr: 0x8899000a (вызов этого метода недопустим.)

Любая помощь в получении этой работы приветствуется.

1 Ответ

0 голосов
/ 15 марта 2019

Этот метод требует определенной точности буфера.

hr = context2_->CreateGradientStopCollection(
    (D2D1_GRADIENT_STOP*)gradientStops,
    gradientStopsCount,
    D2D1_COLOR_SPACE_SRGB,
    D2D1_COLOR_SPACE_SRGB,
    D2D1_BUFFER_PRECISION_8BPC_UNORM_SRGB, // Buffer precision
    D2D1_EXTEND_MODE_CLAMP,
    D2D1_COLOR_INTERPOLATION_MODE_STRAIGHT,
    &native2);
...