Рисование линии с определенной шириной пикселя
Я хотел бы отображать данные X/Y на холсте, используя строки с определенной шириной (в пикселях или "dp" в идеале). Я попробовал метод setStrokeWidth (..) Paint, и это действительно меняет ширину линии, но это не то, что мне нужно. В моем случае я масштабировал свой холст до "реальных единиц техники", используя matrix.preScale(xScale, yScale), поэтому масштаб X представляет от 0 до 100, а Y - от 0 до 1. Метод setStrokeWidth() объекта Paint кажется для установки штриха так, чтобы он соответствовал моим настройкам preScale(). Другими словами, горизонтальные линии нарисованы очень тонкими, а вертикальные линии нарисованы очень толстыми.
Есть ли способ настроить Paint так, чтобы независимо от того, в каком направлении линия рисуется, его ширина представляет собой согласованное количество пикселей?
Я попытался определить Drawable, который является строкой, и вытащить ShapeDrawable из этого, а затем применить его к Paint, но столкнулся с некоторыми неприятными ошибками кастинга класса во время выполнения. Это заставило меня подумать, что это был неправильный путь. Но, возможно, я слишком скоро сдался.
Я понимаю, что есть ряд доступных для Android графиков/диаграмм пакетов, некоторые из них с исходным кодом, но я действительно хочу понять платформу здесь, а не использовать стороннее решение.
Спасибо за любые подсказки!
Рич
Ответы
Ответ 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, применяю его к холсту, рисую карту, а затем инвертирую этот масштабный коэффициент и примените его к ширине линий для наложений. Таким образом, холст масштабируется, а наложения масштабируются, затем масштабируются, поэтому они имеют фиксированную ширину.
Я нашел, что это работает очень хорошо, без реального успеха.