c++ - Skia SkCanvas不能用SkBitmap构造

标签 c++ bitmap skia

我有一个 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/

相关文章:

android - 在 Android NDK 中使用 Skia

flutter - 什么是Canvas.save和Canvas.restore?

c++ - 打印二维 vector 指针

java - 在位图中单独操作颜色

c# - 将两个图像合并为一个新图像

optimization - Dart 2 中的最佳渲染循环是什么?

c++ - MinGW 4.7.2 与 Visual C++ 11.0 (2012) 基准测试

c++ - 将派生类存储到 vector C++

c++ - OSX Lion 上 curses.h 的问题

c# - 原始像素数组到灰度 BitmapImage