Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];

Вниз

Отрисовка линии 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.039 c
1-50359
Reals
2003-06-03 17:51
2003.06.16
Расположение пунктов главного меню...


14-50476
DiamondShark
2003-05-30 14:28
2003.06.16
Нужен козырный снимок акулы


1-50384
joker
2003-06-04 12:26
2003.06.16
Edit1.Text


9-50193
Plugin
2003-01-02 06:43
2003.06.16
DoCollision в DelphiX


14-50490
avk
2003-05-30 19:09
2003.06.16
не могу открыть исходник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский