将图片绘制到视图的画布上啥都不做

Posted

技术标签:

【中文标题】将图片绘制到视图的画布上啥都不做【英文标题】:Drawing a Picture to a View's Canvas does nothing将图片绘制到视图的画布上什么都不做 【发布时间】:2013-06-08 18:20:13 【问题描述】:

我正在尝试使用android.graphics.Picture 来加快我的应用程序所做的一些绘图。但是,当我尝试重放它时,什么也没有发生,就好像Picture 根本没有被绘制或者好像它没有记录任何东西。

这是我的绘图代码;为简单起见,我只是将所有内容移到了我的 ViewonDraw 方法中。

@Override
protected void onDraw(Canvas canvas) 
    super.onDraw(canvas);
    canvas.drawColor(Color.RED);

    Picture p = new Picture();
    Paint paint = new Paint();

    paint.setColor(Color.BLACK);
    paint.setStyle(Style.STROKE);

    Canvas c = p.beginRecording(100, 100);
    c.drawColor(Color.WHITE);
    c.drawLine(0, 0, 100, 100, paint);
    p.endRecording();

    p.draw(canvas);
    canvas.drawPicture(p);

有了这个,我得到的只是一个完全红色的背景,没有别的;线条和Picture 的白色背景都没有出现。

然后我尝试了http://www.java2s.com/Code/Android/2D-Graphics/DrawPicture.htm 上发布的示例代码,但也无济于事:没有任何显示,我得到的只是白色背景。

这发生在我的 Galaxy S2 (Android 4.1.2) 和模拟器 (4.2.2) 上。

【问题讨论】:

【参考方案1】:

在你的活动中试试这个:

View view = new View(this);
Picture picture = new Picture();
Canvas c = picture.beginRecording(100, 100);
Paint p = new Paint();
c.drawColor(Color.WHITE);
p.setColor(Color.RED);
c.drawCircle(50, 50, 40, p);
picture.endRecording();
Drawable d = new PictureDrawable(picture);
view.setBackgroundDrawable(d);
setContentView(view);

你应该看到白色背景上的红色小圆圈(在 2.3 模拟器上测试)

【讨论】:

抱歉回复晚了,我完全错过了这个答案:)。

以上是关于将图片绘制到视图的画布上啥都不做的主要内容,如果未能解决你的问题,请参考以下文章

使用 TPH 和复杂类型时 LINQ to Entities 的初始性能问题,Pregen 视图似乎啥都不做?

将 UIView.transform 设置为任意翻译 CGAffineTransform 啥都不做

User.objects.create() 啥都不做。 (姜戈)

调度触摸事件到画布上绘制的视图

在画布上绘制片段视图

加载数据 infile 啥都不做