Рисуем с холстом на виде, но ничего не красим - PullRequest
2 голосов
/ 21 ноября 2011

Я новичок.У меня проблема.Это пример использования canvas в представлении.

Предполагается, что круг и текст на нем должны быть видны.

(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);
    }

}

Это код фонового изображения !!

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);

Спасибо вам всем тоже самое.

Ответы [ 3 ]

0 голосов
/ 19 апреля 2012

Я видел пример в «Hello Android 3rd».Я обнаружил, что cPaint = new Paint(Color.GRAY); не так.Я изменил его на cPaint = new Paint(); cPaint.setColor(Color.WHITE);, и это сработало.

0 голосов
/ 02 февраля 2015

Это просто потому, что вы передаете значения в краске Construtor * cPaint = new Paint (VALUES) * возвращает ноль! когда вы передаете null в функции canvas как объект рисования, он дает вам цвет по умолчанию (ЧЕРНЫЙ). Правильный способ инициализации объекта рисования приведен ниже ...

    cPaint = new Paint();
    cPaint.setColor(Color.GRAY);
    tPaint = new Paint();
    tPaint.setColor(Color.BLACK);
0 голосов
/ 21 ноября 2011

1. Поставьте invalidate(); после строки canvas.drawTextOnPath(text, circle, 0, 20, tPaint);

2. Старайтесь не устанавливать Background в конструкторе и посмотрите, рисует ли он.

...