Форум: "Основная";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];
ВнизКак задать толщину линии TPen.Width равную 1 мм?(продожение темы) Найти похожие ветки
← →
Dmitry S © (2008-09-22 17:36) [0]Я понимаю, что пиксел может быть не квадратный! Я потому и спрашиваю, что писать в TPen.Width.
Понятно дело, если линия горизонтальная - <количество точек на мм по вертикали>, если вертикальная - <количество точек на мм по горизонтали> писать нужно. А как быть, если линия под углом 30 градусов? А если это еще и кривая, что тогда?
← →
KilkennyCat © (2008-09-22 17:58) [1]Есть разрешение: точки на дюйм. Остальное - побарабану.
← →
Dmitry S © (2008-09-22 18:08) [2]
> Есть разрешение: точки на дюйм. Остальное - побарабану.
Есть разрешение по-горизонтали, есть по-вертикали.
А если точки на кв. дюйм, но тут это не в кассу.
← →
Поросенок Винни-Пух © (2008-09-22 18:21) [3]Есть разрешение по-горизонтали, есть по-вертикали.
А разрешения по диагонали нет.
Значит в кассу.
← →
{RASkov} © (2008-09-22 18:56) [4]> [0] Dmitry S © (22.09.08 17:36)
> Я понимаю, что пиксел может быть не квадратный!
Нет, значит не понимаешь :(
Ибо width - это одно значение и оно либо столько, либо столько, или либо столько, но никак не столько и столько. :)
Вот научишь перо вращать при рисовании линии, тогда да, можно прямоугольным пикселем рисовать ровномерной толщины линию в любом направлении...
Подсказка: попробуй LineDDA использовать
← →
Leonid Troyanovsky © (2008-09-22 19:42) [5]
> Dmitry S © (22.09.08 17:36)
> под углом 30 градусов? А если это еще и кривая, что тогда?
Ну, тут все просто: тридцатиградусный угловой пиксель.
Или кривой, если не свезло.
--
Regards, LVT.
← →
Дмитрий Белькевич © (2008-09-22 20:12) [6]Математика тебе поможет, в частности тригонометрия. Это в случае линий, если нужны кривые - то, думается, никак - только руками эти кривые рисовать поточечно или разбивая на достаточно короткие отрезки.
← →
Дмитрий Белькевич © (2008-09-22 20:20) [7]Формулу готовую без бумаги не напишу, могу только логику представить.
В случае линий, очевидно, нужно учитывать DPI и по X и по Y, беря какую-то часть от каждой координаты с помощью коэффициентов. В сумме коэфиициентов получая единицу. Коэффициенты зависят от угла наклона линии - в какую сторону линия наклонена больше, от той координаты будет больше и браться.
Дальше думай сам...
← →
Anatoly Podgoretsky © (2008-09-22 20:56) [8]> Дмитрий Белькевич (22.09.2008 20:12:06) [6]
Алгоритмы Брезенхема, в частности реализованый в Виндоус LineDDA - идеально подходит для этой цели, если не используются операции из Виндовс. Также ширина и высота "пикселя" важна для сглаживания линий
← →
DVM © (2008-09-22 22:12) [9]Мне кажется, в GDI+ уже все это реализовано.
← →
Дмитрий Белькевич © (2008-09-22 22:15) [10]Брезенхем тут слабо поможет - отрезки прямых можно и виндой рисовать, только толщину постоянно пересчитывать (что придётся и LineDDA делать, как я понимаю), а кривые оно всё равно не посчитает.
Опять же - медленно...
← →
Anatoly Podgoretsky © (2008-09-22 23:35) [11]> Дмитрий Белькевич (22.09.2008 22:15:10) [10]
Естественно, что Line это прямая, а любая кривая это набор прямых.
LineDDA избавляет от расчета следующей точки, что делается с помощью оптимального алгоритма (Брезенхема).
А расчитаная точка - это уже пиксель любой формы и размера.
← →
Anatoly Podgoretsky © (2008-09-22 23:35) [12]> Дмитрий Белькевич (22.09.2008 22:15:10) [10]
Забыл насчет "медленно", а что быстро?
← →
Германн © (2008-09-23 00:29) [13]Имхо, на данный момент подобные дискуссии о ширине карандаша в миллиметрах бессмыслены.
Особенно в отношении сабжа! Сей сабж есть "восстановление закрытой ветки". А судя по высказываниям автора в этой ветке, он не понял ничего из закрытой, не хочет понимать, да в добавок злится.
← →
Дмитрий С (2008-09-23 01:14) [14]
> Германн © (23.09.08 00:29) [13]
:) чудно. Однако ответа я так и не получил.
← →
Германн © (2008-09-23 01:28) [15]
> Дмитрий С (23.09.08 01:14) [14]
>
>
> > Германн © (23.09.08 00:29) [13]
>
> :) чудно. Однако ответа я так и не получил.
>
А ты спрашивал? Или Dmitry S ©?
Вы оба получили кучу ответов, в которых ясно было сказано, что свойство TPen.Width в общем случае не гарантирует толщину линии! И не может её гарантировать!
Придуриваешься? Или нет?
← →
Дмитрий Белькевич © (2008-09-23 02:35) [16]>Забыл насчет "медленно", а что быстро?
MoveTo, если, конечно, аппаратное ускорение есть. Иначе - всё равно, да.
>:) чудно. Однако ответа я так и не получил.
Ответов ты получил множество.
Если нужен кусок кода - есть job.ru и аналоги.
В любом случае, для общего случая не получится.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2009.11.01;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.007 c