Android - 绘制位图

时间:2012-09-10 02:22:26

标签: android canvas bitmap

我的测试Android应用程序有一个单独的活动,LoadImage,有两种方法:使用OpenCV处理图像的onCreate方法,以及在屏幕上显示图像5秒钟的Display方法。以下是我目前为Display方法所做的:

[convert OpenCV matrix to a bitmap using an OpenCV method]

Canvas canvas = new Canvas(bitmap);
canvas.drawBitmap(bitmap, 0, 0, null);

try {
    synchronized (this) {
        wait(5000);
    }
} catch (InterruptedException e) {
}

这是单个活动的XML文件(它是一个空白屏幕):

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
</RelativeLayout>

如果我按原样运行代码,我会得到一个空白屏幕。如何显示位图?

非常感谢。

2 个答案:

答案 0 :(得分:1)

试试这个:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

<ImageView
            android:id="@+id/imageView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginLeft="2dp"/>
</RelativeLayout>

在你的java代码中执行此操作:

onCreate()
{
    ImageView imageView = (ImageView) findViewById(R.id.imageView1);
}

您是否正在将位图发送到画布?

所以在你的方法中这样做,你要绘制位图。

imageView.setImageBitmap(bitmap);

您无法将画布直接设置为imageView1。

因为正如你在现实生活中所知道的那样,画布只是一个画笔。同样在这里画布也只是画笔。所以不要担心它。您编辑的图像现在只存储在bitmap中。这就是为什么你可以在editng后用画布直接设置位图

答案 1 :(得分:0)

我将此添加到我的acitity_main.xml(它是LinearLayout):

<ImageView
android:id="@+id/imageView1"
android:layout_width="200px"
android:layout_height="200px"
android:layout_marginLeft="2dp"/> 

这个代码用于OnCreate方法,用于该xml的活动:

Bitmap bitmap = BitmapFactory.decodeFile(fileAndPath); 
mImageView = (ImageView) findViewById(R.id.imageView1);     
mImageView.setImageBitmap(bitmap);

位图图像显示并保留在屏幕上。感谢上面的海报