【问题标题】:drawBitmap draw nothing androiddrawBitmap 什么都不画 android
【发布时间】:2016-07-08 07:55:38
【问题描述】:

我正在开发一个自定义视图,我需要在里面绘制可绘制对象。 那些drawable必须有它们的相对位置。

这是我的代码:

    @Override
protected void onDraw(Canvas canvas) {
    //drawBackground(canvas);

    float height = (float) getHeight();
    float width = (float) getWidth();
    canvas.save(Canvas.MATRIX_SAVE_FLAG);
    canvas.scale(width, height);
    drawFlowChart(canvas);
    drawDrawables(canvas);
    canvas.restore();
}

private void drawDrawables(Canvas canvas) {
    canvas.save(Canvas.MATRIX_SAVE_FLAG);
    Resources res = getResources();
    Bitmap bitmap = BitmapFactory.decodeResource(res, R.drawable.motor);
    canvas.drawBitmap(bitmap, 0.51f, 0.35f, null);
    canvas.restore();
}

但它什么也没画。 任何的想法 ?

我尝试使用 drawBitmap(bitmap, src, dest, paint) 但我不知道如何使用这个定义来定位我的位图的相对位置。

【问题讨论】:

    标签: android bitmap android-canvas android-bitmap


    【解决方案1】:

    可能是您在onDraw 中调用的getHeight()getWidth() 函数返回0,这样画布就会缩放并且什么都看不到。

    您可以参考两个链接来更新画布的宽度和高度以进行绘制:

    Android getWidth() return 0 in View's onDraw Android: How to get a custom View's height and width?

    【讨论】:

    • 不幸的是,在 drawDrawables 绘制我的 RectF、Path 等之前调用了 DrawFlowChart()
    • 如我所见,在你的 onDraw 中你调用 canvas.scale(width, height),如果 width = height = 0 会发生什么?
    • 我同意如果这种情况发生,它不会起作用,但事实并非如此。无论如何,我会关注你的两个链接,因为它比我正在做的更干净,并且可以消除潜在的错误,谢谢。
    猜你喜欢
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    相关资源
    最近更新 更多