развивающая игра на андроид: вращение текста на холсте - PullRequest
0 голосов
/ 14 сентября 2011

У меня проблема с моим кодом. Когда я пытаюсь повернуть текст, все работает, но я хочу восстановить холст, поэтому я вызываю canvas.restore();

Когда я это сделаю, мое приложение будет немедленно закрыто ...

часть моего кода:

коснитесь одной части экрана:

if (wahrheitswert1  == true) { 
    x = 480;
    y = 100;    

    // draw bounding rect before rotating text
    Rect rect = new Rect();
    canvas.translate(x, y);

    // undo the translate
    canvas.translate(-x, -y);
    // rotate the canvas on center of the text to draw
    canvas.rotate(-180, x + rect.exactCenterX(), y + rect.exactCenterY());
    // draw the rotated text
    canvas.drawText("Spieler1 touch", x, y, paint);
    //undo the rotate
    //canvas.restore();
    wahrheitswert1 = false;
    canvas.restore();
}

Если я не восстановлю растровое изображение, фоновое изображение будет скопировано с другого сайта экрана. спасибо за вашу помощь

Ответы [ 2 ]

1 голос
/ 14 сентября 2011

Хотя я не использовал много холста, я не вижу, где вы сохраняете контекст перед его восстановлением. Я почти уверен, что сделаю восстановление контекста, который вы сначала должны сохранить, и контекст.

0 голосов
/ 17 сентября 2013

Вам нужно позвонить

Canvas.save()

, прежде чем вращать холст.Вы можете восстановить Canvas в любое время, вызвав Canvas.save ().Я изменил ваш код ниже.

if (wahrheitswert1  == true) { 
    x = 480;
    y = 100;   

    canvas.save();

    // draw bounding rect before rotating text
    Rect rect = new Rect();
    canvas.translate(x, y);

    // undo the translate
    canvas.translate(-x, -y);
    // rotate the canvas on center of the text to draw
    canvas.rotate(-180, x + rect.exactCenterX(), y + rect.exactCenterY());
    // draw the rotated text
    canvas.drawText("Spieler1 touch", x, y, paint);
    //undo the rotate
    //canvas.restore();
    wahrheitswert1 = false;
    canvas.restore();
}

У меня тоже была такая же проблема, и она работала для меня.

...