2015-12-03 92 views
0

我一直试图在ImageView上画一个Canvas,但在创建位图后,我在屏幕上看不到图像。我唯一得到的是我在onDraw方法中绘制的小圆圈。我想在ImageView上有Canvas在ImageView/Bitmap上绘制画布

我有下面的代码:

public class MainActivity extends AppCompatActivity { 

    ImageView imageView; 
    Bitmap myBitmap; 
    Paint paint; 
    Button button; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    button = (Button) findViewById(R.id.button); 

    } 

    public void onClickButton(View view) { 

    View v = new DrawCanvas(getApplicationContext()); 
    Bitmap bitmap = Bitmap.createBitmap(48, 48, Bitmap.Config.ARGB_8888); 
    Canvas canvas = new Canvas(bitmap); 

    v.draw(canvas); 
    imageView = (ImageView) findViewById(R.id.testpicture); 
    imageView.setImageBitmap(bitmap); 
    } 
} 

public class DrawCanvas extends View { 

    Paint paint = new Paint(); 

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

    public DrawCanvas(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 


    @Override 
    public void onDraw(Canvas canvas) { 
     super.onDraw(canvas); 
     paint.setColor(Color.RED); 

     canvas.drawCircle(25, 25, 5, paint); 
    } 
} 

提前感谢!

回答

0

首先,你过于复杂的事情。你不需要或不想看到你正在做的事情。如果你想绘制一个圆圈,通过在你的onClick中使用canvas.drawCircle直接进入画布。

其次,alling setImageBitmap将覆盖您设置的任何以前的位图。如果你想这显示在前面的图像,你有两个选择:

1)使用在彼此顶部的两个图像视图,并设置最高图像到画布上进行位图(使这项工作你可能需要确保位图上的背景颜色是透明的)。

2)通过覆盖onDraw创建一个关于ImageView的新视图,该视图显示2位图。

第一种方法可能更容易。