【问题标题】:draw circle on bitmap在位图上画圆
【发布时间】:2011-04-03 17:02:47
【问题描述】:

我编写了一个应用程序,它可以捕捉图片并将其保存在 sdcard 上。然后我可以将该图像加载到图像视图中以显示它。我想在显示之前在位图上画一个圆圈。下面的代码显示了位图但没有圆圈,任何想法为什么圆圈不存在?

谢谢。

BitmapFactory.Options bfo = new BitmapFactory.Options();
        bfo.inSampleSize = 5;
        Bitmap bm = BitmapFactory.decodeByteArray(imageArray, 0, imageArray.length, bfo);
        Log.e(TAG, bm.toString());
        //imageview.setImageBitmap(bm);


        Bitmap bmOverlay = Bitmap.createBitmap(bm.getWidth(), bm.getHeight(), bm.getConfig());
        canvas = new Canvas(bmOverlay);
        Paint paint = new Paint();
        paint.setColor(Color.RED);
        canvas.drawBitmap(bm, new Matrix(), null);
        canvas.drawCircle(750, 14, 11, paint);
        imageview.setImageBitmap(bmOverlay);

【问题讨论】:

    标签: android graphics bitmap


    【解决方案1】:

    您可以查看bm.getWidth。如果您使用的样本大小为 5,那么您的图像将比原始图像小 5 倍,导致您的圆圈从图像的右侧消失。

    你可以试试:

    paint.setStrokeWidth(10);
    canvas.drawCircle(50, 50, 25);
    

    只是作为一个健全的检查。

    【讨论】:

    • @matthew willis 嘿,谢谢它现在可以工作了。我可以像你之前帮助过的那样挑选你的大脑吗?你似乎对图形有一些了解。我在图像上方有一个滑动条,并且希望在移动滑动条时更改并重绘圆圈。 atm 图像位于图像视图中,而图像视图又位于布局中的透明表面视图之后。这给出了在屏幕上浮动的栏的效果。我在想我可能需要opengl来做到这一点?你会使用哪些库?
    • 您应该能够简单地聆听滑动条(SeekBar?)中的变化,然后使您绘制圆圈的视图无效并让它在新位置绘制。我可能误解了你要做什么。
    • 我想要图像上的一个圆圈,当搜索栏移动时,它会扭曲位图中的底层像素。我只是想一点一点地去做。我已经把圆圈做成了一个透明的内部,所以我想只在圆圈内重新排列像素,希望我已经解释过了
    • 嗯,其实我画画的经验不是很丰富。但是,您可能不想将 ImageView 用于动画。为什么不使用自定义视图并在onDraw 期间直接绘制?
    • @matthew willis 嗨,是的,这听起来像是一个计划,也是我想要尝试的。你能帮我清理一下吗? atm 我在相对布局中有一个surfaceview,在surfaceview 之后带有按钮(因此它们似乎漂浮在屏幕上)。就像你说的,我不需要使用 imageview,而是使用 customview 类,然后覆盖 onDraw()。到目前为止,一切都很好。但是,如果我想要一个带有按钮的表面视图(全部在 xml 文件中声明),我在创建 customview 并将其传递给我的活动中的 setContentView() 时是否需要 xml 文件?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    相关资源
    最近更新 更多