Android холст рисовать текст частично

На холсте можно рисовать текст, но сделать так, чтобы половина его не отображалась (как будто он частично рисуется на холсте, но фактически не на холсте). У меня есть индикатор на "графике" с некоторым текстом, и он следует за точкой, но я не хочу, чтобы текст выводился из части графика (я рисую другие вещи вне этой области).

У меня также есть фон на макете за холстом, поэтому я не могу просто рисовать растровым изображением, потому что это может вызвать проблемы с соотношением сторон / размером (не очень хорошо выглядит).


Я пытался искать ответы по всему Google, переполнение стека и экспериментально, но безрезультатно. В Google я нашел много интересных вещей о рисовании текста на холсте Android, но ничего такого, что я искал раньше, я довольно озадачен, и я начинаю думать, что то, что я хочу, даже невозможно, и мне может понадобиться нарисовать текст обычай с точками или найти альтернативу, которая выглядит так же хорошо.

2 ответа

Решение

Это абсолютно возможно. Вероятно, самым быстрым является использование clipRect для ограничения рисования частью вашего графика. Смотрите этот ответ: Использование clipRect - объяснение

Ссылка на различные формы clipRect находится здесь: http://developer.android.com/reference/android/graphics/Canvas.html, android.graphics.Region.Op)

Если я вспомню, вся операция будет выглядеть примерно так:

yourCanves.save()
yourCanvas.clipRect(...)
yourCanvas.drawText(...)
yourCanvas.restore()

Вызов restore() служит для отмены clipRect, чтобы вы могли рисовать вне его для последующего рисования.

Самое простое решение, которое пришло мне в голову, - это вырезать с помощью подстроки текст, который вы хотите отобразить.

Пример:

if(MyString >5){
   canvas.drawText("VeryLongTe...");
}
Другие вопросы по тегам