【问题标题】:Using canvas and bitmap in Android , how to get this image?在 Android 中使用画布和位图,如何获取此图像?
【发布时间】:2016-11-10 07:30:51
【问题描述】:

我是安卓新手。我正在尝试绘制此图像(匹配统计信息) 并用 10% 到 100% 的颜色填充图像。我试了这么多,这是image

这是代码

public class DrawView extends View {
Paint paint = new Paint();

public DrawView(Context context) {
    super(context);
}

@Override
public void onDraw(Canvas canvas) {
    paint.setColor(Color.BLACK);
    paint.setStrokeWidth(3);
    canvas.drawRect(30, 30, 100, 100, paint);
    paint.setStrokeWidth(0);
    paint.setColor(Color.GRAY);
    canvas.drawRect(33, 60, 97, 97, paint);
    paint.setColor(Color.WHITE);
    canvas.drawRect(33, 33, 97, 60, paint);

}

任何建议都会对我有很大帮助。 提前致谢。

【问题讨论】:

标签: android android-canvas android-custom-view android-bitmap


【解决方案1】:

我会准备两个图像 - 完全填充和未填充(仅描边)。有了它,将它们加载为两个 Bitmap 对象,然后像这样绘制:

float fillProgress = 0.1f; // let's say image is 10% filled

canvas.drawBitmap(onlyStroke, 0f, 0f, null);  // draw just stroke first

canvas.save();
canvas.clipRect(
    0f,                                       // left
    getHeight() - fillProgress * getHeight(), // top
    getWidth(),                               // right
    getHeight()                               // bottom
);
canvas.drawBitmap(filled, 0f, 0f, null);      // region of filled image specified by clipRect will now be drawn on top of onlyStroke image
canvas.restore();

使用两个图像,轮廓和填充,例如下面。

上面的代码做了以下事情:

  1. 绘制轮廓。
  2. 应用剪辑(裁剪)区域。
  3. 绘制填充形状并应用裁剪。
  4. 根据需要删除剪辑、图像。

应用不同的剪辑尺寸,您可以获得所需的填充百分比。例如

【讨论】:

  • 我想一些例子来展示这两个图像如何合并会有所帮助。这是一个很好的方法,但我认为视觉效果会更好地解释它。 (+1)
  • @Doomsknight 更好吗?
  • @BDudhraj 最好在 StackOverflow 上创建另一个问题。或者,更好的是,找到已经存在的答案。
  • 我觉得很有创意 :) 喜欢这个解决方案,并将在我自己的项目中使用它。我没有想到的东西。但一旦提到,让我去“哦,你……我为什么没想到”
  • @Shrikant 最简单的绘制方法是创建一个新的自定义视图。只需扩展View 类,重写onDraw 方法并使用上面的代码在Canvas 上绘制。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-16
  • 1970-01-01
  • 2019-04-19
  • 2011-04-30
  • 1970-01-01
  • 2017-03-20
相关资源
最近更新 更多