Точка, по определению, 1/72 дюйма - см Википедия Point_(typography)
Размер пиксела зависит от разрешения экрана на устройстве. Чтобы быть понятным, это разрешение обычно указывается в точках на дюйм (dpi). Это не Общее использование для разрешения термина, которое является высотой и шириной пикселя экрана. Люди используют разрешение таким образом неправильно. Разрешение - это плотность точек на экране, а не количество пикселей на экране.
Дело в том, что между количеством пикселей, отображаемых на экране, нет НИКАКОЙ связи с количеством пикселей, которые необходимы для точки. Вы не можете использовать преобразование, которое вы пытаетесь выполнить.
Чтобы определить количество пикселей, соответствующих 1 точке, вы должны получить разрешение экрана. BB предусматривает два способа для этого:
Display.getHorizontalResolution();
Display.getVerticalResolution();
К счастью, это даст вам то же значение на всех устройствах BBOS (Java), так как все BBOS устройства имеют одинаковый вертикальное и горизонтальное разрешение.
Приведенное значение представляет собой количество пикселей в одном метре. Итак, все, что вам нужно сделать, это определить, сколько 1/72 дюйма на 1 метр, разделите одно из этих значений на это число, а затем у вас будет количество пикселей в точке.
Из-за целочисленной арифметики, при выполнении этого расчета, я бы умножал на размер точки, который вы пытаетесь достичь, прежде чем делать деление. Например:
int pixelSizeReqd = pointSizeReq *
Display.getHorizontalResolution()/pointsInOneMetre;
И, кстати, просто позвоните Display.getHorizontalResolution() один раз и повторно использовать возвращаемое значение. Я не уверен в getHorizontalResolution(), но я знаю, что некоторые методы отображения, например, getHeight() и getWdith() являются «дорогими», поэтому следует избегать, если это возможно. В любом случае значение не изменится!
Обновление, следующее за этим комментарием: Можете ли вы объяснить в одном примере. Предположим, что я получил (разрешение 320x240) устройство 8520 у меня есть точка (скажем, 57pt), что бы его соответствующее значение пикселя согласно вашей формуле ... ИНТ pixelSizeReqd = pointSizeReq * Display.getHorizontalResolution()/pointsInOneMetre
ответа : Обратите внимание, что 8520 имеет размер экрана 320 x 240. Это не его разрешение экрана для целей этой дискуссии. Понял?
Вы хотите размер 57 пунктов. Таким образом, расчет:
int pixelSizeReqd = 57 * Display.getHorizontalResolution()/pointsInOneMetre;
Вы не должны заменить Display.getHorizontalResolution() с фигурой - это будет отличаться на разных устройствах и нет необходимости для вас, чтобы попытаться исправить это значение для себя.
Сколько баллов в 1 метре? Вы можете сделать математику, конвертировать 1/72 дюйма в метры, а затем разделить 1 метр на это. Или вы можете ввести в Google «сколько очков в метре» и получить ответ 2,834.64567. Нам не нужна точность, поэтому мы используем только целочисленную арифметику, чтобы дать нам это:
int pixelSizeReqd = 57 * Display.getHorizontalResolution()/2834;
работы - это не было слишком трудно было?
Можете ли вы объяснить в примере. Предположим, что у меня есть устройство 8520 (разрешение 320x240), у меня есть точка (скажем, 57pt), каково будет ее соответствующее значение пикселя в соответствии с вашей формулой ... int pixelSizeReqd = pointSizeReq * Display.getHorizontalResolution()/pointsInOneMetre; – Yatin
8520 НЕ имеет разрешение экрана 320 x 240, то есть его размер экрана. См. Обновление выше. –