gpt4 book ai didi

android - 在 Android 中将图像添加到 Canvas

转载 作者:太空狗 更新时间:2023-10-29 14:31:53 25 4
gpt4 key购买 nike

大家好

我希望您能帮助我理解如何在 View 上实现的 OnTouchEvent 上将图像添加到 Canvas 中的概念。到目前为止,这就是我的想法。
parent 是在此自定义 View 中实例化并添加到其中的 Activity。

@Override
protected void onDraw(Canvas canvas)
{
// TODO Auto-generated method stub
super.onDraw(canvas);
}

public void insertImage()
{
if (parent.selected_icon.contentEquals("image1"))
{
image = getResources().getDrawable(R.drawable.image1);
}
else if (parent.selected_icon.contentEquals("image1"))
{
image = getResources().getDrawable(R.drawable.image2);
}
else if (parent.selected_icon.contentEquals("iamge3"))
{
image = getResources().getDrawable(R.drawable.image3);
}

Rect srcRect = new Rect(0, 0, image.getIntrinsicWidth(),
image.getIntrinsicHeight());
Rect dstRect = new Rect(srcRect);

Bitmap bitmap = Bitmap.createBitmap(image.getIntrinsicWidth(),
image.getIntrinsicHeight(), Bitmap.Config.ALPHA_8);

Canvas canvas = new Canvas();
canvas.drawBitmap(bitmap, srcRect, dstRect, null);
invalidate();
}

最佳答案

当你想在 View 上绘制时,你必须在 onDraw() 中使用传递到那里的 Canvas 来完成。 Canvas 已经绑定(bind)到 Bitmap,它是您 View 的实际绘图。

我不得不做类似的事情,我的方法是这样的:

  • 作为类(class)成员,我有一个“要在 View 上绘制的东西”的列表。
  • 每当我向该列表添加内容时,我都会调用 invalidate(),这样 onDraw() 就会被调用。
  • 我的 onDraw() 看起来像这样:

...

protected void onDraw(Canvas canvas) {
super.onDraw(canvas); // the default drawing

for(ThingToBeDrawn thing : mListOfThingsToBeDrawn) {
thing.drawThing(canvas); // draw each thing over the view
}
}

Canvas 只是用来绘制Bitmap 的工具,它的工作方式与SurfaceView 有很大不同。

关于android - 在 Android 中将图像添加到 Canvas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5823680/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com