Skia SkCanvas нельзя построить с помощью SkBitmap

У меня есть функция рисования (SkCanvas * canvas).

В main () я пишу:

SkBitmap myBitmap;
myBitmap.allocN32Pixels(640, 480);

SkCanvas *myCanvas(&myBitmap);
draw(myCanvas);

Но Visual Studio генерирует эту ошибку:

"a value of type "SkBitmap *" cannot be used to initialize an entity of type "SkCanvas*"

Что я делаю неправильно?

Моя функция draw () загромождает пост и совершенно бесполезна для ответа на этот вопрос, иначе я ее опубликовал.

Это конструкция для SkCanvas.

/** Construct a canvas with the specified bitmap to draw into.
        @param bitmap   Specifies a bitmap for the canvas to draw into. Its
                        structure are copied to the canvas.
    */
explicit SkCanvas(const SkBitmap& bitmap);

person Aurlito    schedule 05.04.2017    source источник


Ответы (1)


SkCanvas *myCanvas(&myBitmap);

это указатель на холст. Типы указателей SkCanvas* и SkBitmap* не связаны.

SkCanvas myCanvas(&myBitmap);

это значение типа myCanvas, инициализированное указателем на точечный рисунок. Если SkCanvas имеет ctor, принимающий SkBitmap*, это должно сработать.

Это не. В нем есть:

explicit SkCanvas(const SkBitmap& bitmap);

так это означает:

SkCanvas myCanvas(myBitmap);

Возможно, вам также потребуется изменить вызов отрисовки на это:

draw(&myCanvas);

при условии, что это работает. Предположительно, вам также необходимо напомнить о разнице между указателями и значениями.

person Yakk - Adam Nevraumont    schedule 05.04.2017
comment
Это решило только половину моей проблемы. Конструктор не соответствует, ошибка все еще сохраняется. - person Aurlito; 05.04.2017
comment
@aurk вы также неправильно прочитали конструктор растрового изображения холста. Фиксированный. - person Yakk - Adam Nevraumont; 05.04.2017