Подтвердить что ты не робот

Рисование линии с определенной шириной пикселя

Я хотел бы отображать данные X/Y на холсте, используя строки с определенной шириной (в пикселях или "dp" в идеале). Я попробовал метод setStrokeWidth (..) Paint, и это действительно меняет ширину линии, но это не то, что мне нужно. В моем случае я масштабировал свой холст до "реальных единиц техники", используя matrix.preScale(xScale, yScale), поэтому масштаб X представляет от 0 до 100, а Y - от 0 до 1. Метод setStrokeWidth() объекта Paint кажется для установки штриха так, чтобы он соответствовал моим настройкам preScale(). Другими словами, горизонтальные линии нарисованы очень тонкими, а вертикальные линии нарисованы очень толстыми.

Есть ли способ настроить Paint так, чтобы независимо от того, в каком направлении линия рисуется, его ширина представляет собой согласованное количество пикселей?

Я попытался определить Drawable, который является строкой, и вытащить ShapeDrawable из этого, а затем применить его к Paint, но столкнулся с некоторыми неприятными ошибками кастинга класса во время выполнения. Это заставило меня подумать, что это был неправильный путь. Но, возможно, я слишком скоро сдался.

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

Спасибо за любые подсказки! Рич

4b9b3361

Ответ 1

Например, на Android: paint.setStrokeWidth(3); Этот метод устанавливает ширину линии. В этом случае ширина линии составляет 3 пикселя. Я ищу именно этот метод на BlackBerry.

Попробуйте следующее:

    Graphics.setColor(Color.RED);
    Graphics.setStrokeWidth(20);
    Graphics.drawRect(0, 0, 100, 100);

Они доступны в пакете net.rim.device.api.ui.Graphics.

Ответ 2

Мне нужно было сделать что-то подобное при рисовании наложений на карте.

Как пользователь может использовать multi-touch для масштабирования карты динамически, когда я вхожу в процедуру рисования, я вычисляю масштабный коэффициент для осей x и y, применяю его к холсту, рисую карту, а затем инвертирую этот масштабный коэффициент и примените его к ширине линий для наложений. Таким образом, холст масштабируется, а наложения масштабируются, затем масштабируются, поэтому они имеют фиксированную ширину.

Я нашел, что это работает очень хорошо, без реального успеха.