2017-04-05 2 views
0

Ich habe eine Zeichnungsfunktion (SkCanvas * Canvas).Skia SkCanvas kann nicht mit SkBitmap erstellt werden

In main() Ich schreibe:

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

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

Aber Visual Studio erzeugt diesen Fehler:

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

Was mache ich falsch?

Meine draw() Funktion klemmt den Beitrag und ist völlig nutzlos für diese Frage, sonst habe ich es gepostet.

Dies ist die Konstruktion für 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); 

Antwort

1
SkCanvas *myCanvas(&myBitmap); 

dies ist ein Zeiger auf eine Leinwand. Die Zeigertypen SkCanvas* und SkBitmap* sind nicht verwandt.

SkCanvas myCanvas(&myBitmap); 

Dies ist ein Wert des Typs myCanvas, mit einem Zeiger initialisiert Bitmap. Wenn SkCanvas einen Ctor hat, der eine SkBitmap* nimmt, sollte dies funktionieren.

Es tut es nicht. Es hat:

explicit SkCanvas(const SkBitmap& bitmap); 

so bedeutet dies:

SkCanvas myCanvas(myBitmap); 

Sie werden wahrscheinlich müssen auch den Anruf zu dieser Auslosung ändern:

draw(&myCanvas); 

, dass die Arbeiten übernehmen. Als eine Schätzung müssen Sie auch den Unterschied zwischen Zeigern und Werten auffrischen.

+0

Es löste nur die Hälfte meines Problems. Der Fehler "Konstruktor stimmt nicht überein" bleibt bestehen. – Aurlito

+0

@aurk Sie lesen auch den Canvas-Bitmap-Konstruktor falsch. Fest. – Yakk

+0

Es hat funktioniert. Vielen Dank. Müssen die Dokumente wirklich lesen. – Aurlito

Verwandte Themen