Skia SkCanvas 不能用 SkBitmap 构建
Posted
技术标签:
【中文标题】Skia SkCanvas 不能用 SkBitmap 构建【英文标题】:Skia SkCanvas cannot be constructed with SkBitmap 【发布时间】:2017-04-05 01:39:00 【问题描述】:我有一个 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);
【问题讨论】:
【参考方案1】:SkCanvas *myCanvas(&myBitmap);
这是一个指向画布的指针。 SkCanvas*
和SkBitmap*
的指针类型不相关。
SkCanvas myCanvas(&myBitmap);
这是一个myCanvas
类型的值,用指向位图的指针初始化。如果SkCanvas
有一个演员采取SkBitmap*
,这应该可以。
它没有。它确实有:
explicit SkCanvas(const SkBitmap& bitmap);
所以这意味着:
SkCanvas myCanvas(myBitmap);
您可能还需要将绘图调用更改为:
draw(&myCanvas);
假设可行。作为猜测,您还需要复习一下指针和值之间的区别。
【讨论】:
它只解决了我一半的问题。 “构造函数不匹配”错误仍然存在。 @aurk 您还误读了画布位图构造函数。固定。以上是关于Skia SkCanvas 不能用 SkBitmap 构建的主要内容,如果未能解决你的问题,请参考以下文章