2017-04-05 2 views
0

私は描画(SkCanvas * canvas)関数を持っています。Skia SkCanvasはSkBitmapで構築できません

メインで

()私が書く:

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の値です。 SkCanvasSkBitmap*のコードがある場合は、これが機能するはずです。

これはありません。それは持っている:

explicit SkCanvas(const SkBitmap& bitmap); 

ので、これは意味:

draw(&myCanvas); 

それが動作すると仮定すると:

SkCanvas myCanvas(myBitmap); 

は、おそらくまた、これにドローコールを変更する必要があります。推測すると、ポインタと値の違いについてのリフレッシャーも必要です。

+0

私の問題の半分しか解決しませんでした。 「コンストラクタが一致しません」というエラーは引き続き発生します。 – Aurlito

+0

@aurkまた、キャンバスのビットマップコンストラクタを誤読しました。一定。 – Yakk

+0

それは働いた。ありがとう。本当にドキュメントを読む必要があります。 – Aurlito

関連する問題