我必须在地图上画一条线。由于需要特殊的线条效果,我必须使用临时画布创建一个单独的位图并在该位图上绘制线条。现在当它完成绘制线时,我将它渲染到主画布。不幸的是,下面的代码对我不起作用。
@Override
protected void draw(final Canvas canvas, final MapView mapView, final boolean shadow) {
Bitmap pathBitmap = Bitmap.createBitmap(canvas.getWidth(), canvas.getHeight(), Config.ARGB_4444);
Canvas tempCanvas = new Canvas(pathBitmap);
tempCanvas.drawPath(mPath, this.mPaint);
canvas.drawBitmap(pathBitmap, 0, 0, null);
}
有谁能告诉我这里我做错了什么?
更新:看看我做错了什么。我创建了一个新类并使用Drawable扩展它。在该类中,我重写了Draw方法,并且仅使用参数Canvas使用相同的代码,并且它有效。但不知道为什么它不能在MapView上运行。有人请帮帮我吗?
答案 0 :(得分:1)
在创建位图时,您应该使用视图的getWidget()
和getHeight()
,而不是占用画布的大小。
答案 1 :(得分:0)
我在类似的问题上挣扎。最后,我查看了控制台窗口,发现了这个警告:
“OpenGLRenderer:位图太大而无法上传到纹理中”。这可能是你的问题吗?见"Bitmap too large to be uploaded into a texture"