Текущий архив: 2003.06.16;
Скачать: CL | DM;
ВнизОтрисовка линии Canvas в Найти похожие ветки
← →
Тфьу (2003-06-04 13:05) [0]Есть ли простой способ рисовать линюю только тогда, когда она проходит над определенным цветом? (используя Canvas)
← →
Skier (2003-06-04 13:15) [1]Бррр...Конечная цель какая ?
← →
Тфьу (2003-06-04 13:18) [2]На компоненте несколько Polygon разных цветов. Не вдаваясь в подробности - один из Polygon зеленый. Надо провести темнозеленую линию от верхнего угла до нижнего, но чтобы она фактически рисовалась только тогда, когда пересекает зеленый цвет.
← →
Calm (2003-06-04 13:35) [3]Не совсем то, но тем не менее...
Есть несколько разных алгоритмов отсечения линий. Если их использовать, то можно добиться нужно тебе эффекта. Но тогда нужны данные о координатах полигонов и линий.
← →
Skier (2003-06-04 13:36) [4]Боюсь что придётся по пикселям рисовать.
(у канвы есть свойство для этого)
Вообще хотелось бы по-подробнее узнать что ты пишешь.
Может случится так что ты не тем путём идёшь. (т.е. может быть
можно проще и красивее...)
← →
Тфьу (2003-06-04 13:46) [5]Skier ©, Calm ©: Можно рисовть и по пикселам. Правда я хотел избежать такого гемороя. А проект огромный, поэтому нет возможности изложить все сжато. Коротко говоря это отрисовка 3-х мерной модели с несколькими степенями приоритетов.
Причем программа может быть запущена на любом компе, следовательно на DirectX и OpenGL опираться нельзя.
Разве что посоветуйте более скоростное рисование, чем Pixel[x,y]?
← →
Skier (2003-06-04 13:51) [6]
> Надо провести темнозеленую линию от верхнего угла до нижнего
угла формы ? Или ащё чего ?
← →
Kudatsky (2003-06-04 13:53) [7]Используй функцию LineDDA.
← →
Calm (2003-06-04 13:54) [8]
> Причем программа может быть запущена на любом компе, следовательно
> на DirectX и OpenGL опираться нельзя.
Ну может на GL все-таки можно? В конце концов, библиотека OpenGL входит в стандартную поставку любой винды, да и места занимаен не много, можно вместе с прогой распространять.
А по пикселям будет очень долго. Если только время не критично, а важен только результат.
← →
Тфьу (2003-06-04 14:08) [9]Kudatsky: Я не понял, как LineDDA работает.
Судя по описанию надо создать процедуру, которая на переданные точки как-то реагирует. Но можно подробнее описать?
Calm ©: Надо попробовать...
Skier ©: Не суть важно положение. Главное - линия пересекает разные фигуры.
← →
Skier (2003-06-04 14:14) [10]>Тфьу (04.06.03 14:08)
А описание полигонов и/или их свойства (в общем какая-либо информация) где-то хранится или они просто рисуются и всё...
нарисовали и забыли ?
← →
Kudatsky (2003-06-04 14:17) [11]Вызов такой:
LineDDA(X1,Y1,X2,Y2,@UFunc,Integer(Canvas));
UFunc-пользовательская функция
procedure UFunc(X,Y:Integer;Canvas:TCanvas);stdcall;
В LineDDA передаются координаты начала и конца линии.
LineDDA перебирает все точки линии и координаты каждой
точки передаёт в пользовательскую функцию. И в ней уже
нужно програмно определить, что с этой точкой делать.
← →
Тфьу (2003-06-04 14:26) [12]Skier ©: Нарисовали и забыли.
Kudatsky: Спасибо. Оценю скорость - устроит ли меня.
Страницы: 1 вся ветка
Текущий архив: 2003.06.16;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.005 c