我有一个 draw(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);
最佳答案
SkCanvas *myCanvas(&myBitmap);
这是一个指向 Canvas 的指针。 SkCanvas*
和SkBitmap*
的指针类型不相关。
SkCanvas myCanvas(&myBitmap);
这是一个 myCanvas
类型的值,用指向位图的指针初始化。如果 SkCanvas
有一个接受 SkBitmap*
的构造函数,这应该可以工作。
事实并非如此。它确实有:
explicit SkCanvas(const SkBitmap& bitmap);
所以这意味着:
SkCanvas myCanvas(myBitmap);
您可能还需要将绘图调用更改为:
draw(&myCanvas);
假设可行。作为猜测,您还需要复习一下指针和值之间的区别。
关于c++ - Skia SkCanvas不能用SkBitmap构造,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43220396/