2

我是初学者。我有问题。这是一个关于视图上的画布的示例。

应该可以看到一个圆圈和上面的文字。

( http://goo.gl/6ZPvQ ) 我的名声不足以拍照。

但是什么也没发生。

这是我在画布上绘制的视图。

public class TestCanvasActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new MyGraphics(this));
    }
}

class MyGraphics extends View {
    private Paint cPaint,tPaint;
    private Path circle;
    private String text;

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);
        cPaint = new Paint(Color.GRAY);
        tPaint = new Paint(Color.BLACK);
        circle = new Path();
        text = "Welcome to Android!!";

        circle.addCircle(150, 150, 100, Direction.CW);
        canvas.drawPath(circle, cPaint);
        canvas.drawTextOnPath(text, circle, 0, 20, tPaint);
    }

    public MyGraphics(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
        setBackgroundColor(R.drawable.background);
    }

}

这是背景图片代码!!

背景.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#FFFFFF"
android:endColor="#808080"
android:angle="270" />
</shape>

谢谢!!

我犯了一个低级错误。我将cPaint = new Paint(Color.GRAY)更改为下两行。有用!!

 cPaint = new Paint();
 cPaint.setColor(Color.WHITE);

谢谢大家。

4

3 回答 3

0

1.放在invalidate();行后canvas.drawTextOnPath(text, circle, 0, 20, tPaint);

2.尽量不要在构造函数中设置Background,看是否绘制。

于 2011-11-21T05:57:06.813 回答
0

我在《Hello Android 3rd》中看到了一个例子。我发现这cPaint = new Paint(Color.GRAY);是错误的。我将其更改为cPaint = new Paint(); cPaint.setColor(Color.WHITE);并且有效。

于 2012-04-19T03:24:06.730 回答
0

只是因为您在paint Construtor *cPaint = new Paint(VALUES) * 中传递了值,所以它返回null!当您在画布函数中将 null 作为绘制对象传递时,它会为您提供默认颜色(黑色)。初始化绘画对象的正确方法如下...

    cPaint = new Paint();
    cPaint.setColor(Color.GRAY);
    tPaint = new Paint();
    tPaint.setColor(Color.BLACK);
于 2015-02-02T16:00:54.383 回答