用户绘图未显示在画布上

时间:2011-10-07 06:49:35

标签: android drawing paint

我有这样的XML布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
>

    <com.somedomain.drawings.DrawingSurface
        android:layout_width="fill_parent"
        android:layout_height="200dip"
            android:id="@+id/drawingSurface" 
            android:background="@drawable/bg2"/>

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true" >

        <Button
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
                android:text="OK"
                android:onClick="onClick"
                android:id="@+id/colorGreenBtn" />

    </LinearLayout>

</RelativeLayout>

当我尝试在DrawingSurface上绘图时,绘图没有显示。但画布的背景图像正在显示。当我保存它时,绘图显示在输出上。

当我删除DrawingSurface的背景图像并尝试绘制它时,它正在显示。

我想在用户在画布上绘制背景图片时显示绘图。有任何想法吗?非常感谢您的帮助! :)

更新:这是我的绘图代码

@Override
public void run() {
    Canvas canvas = null;

    while (_run){
        if(isDrawing == true){
            try{

                canvas = mSurfaceHolder.lockCanvas(null);
                if(mBitmap == null){
                    mBitmap =  Bitmap.createBitmap (1, 1, Bitmap.Config.ARGB_8888);
                }


                final Canvas c = new Canvas (mBitmap);

                c.drawColor(0, PorterDuff.Mode.CLEAR);
                canvas.drawColor(0, PorterDuff.Mode.CLEAR);
                canvas.drawColor(0x00000000);

                commandManager.executeAll(c,previewDoneHandler);
                previewPath.draw(c);

                canvas.drawBitmap (mBitmap, 0,  0,null);
            } finally {
                mSurfaceHolder.unlockCanvasAndPost(canvas);
            }


        }

    }

}

1 个答案:

答案 0 :(得分:0)

尝试一些事情:

1)将ImageView放在XML中的drawSurface之前,并将bg放入ImageView。

我知道surfaceView与其他视图不同,但你可以试试。

2)也许你可以先将绘图线程开始绘制到画布上。 canvas.drawBitmap()可能是你想要使用的那个。