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

Вниз

PolyBezierTo   Найти похожие ветки 

 
Rel_   (2003-09-08 09:37) [0]

Мастера, отсоветуйте что-нибудь.

Есть массив точек. Почему функция Polyline отрабатывает отлично, а функция PolyBezierTo либо ничего не рисует, либо в качестве первой точки пытается определить точку (0,0) ???

Массив у меня искусственный - т.е. это не стандартный объек, а созданный одним знакомым новый класс.


 
muravey   (2003-09-08 09:39) [1]

как выглядит код?


 
MBo   (2003-09-08 09:49) [2]

PolyBezierTo рисует от ТЕКУЩЕГО положения пера. Если оно не было задано явно (MoveTo) или косвенно (ф-ции, меняющие позицию гр. вывода), то начало в 0,0.
Учти также, что число точек должно быть кратно 3.


 
Rel_   (2003-09-08 10:19) [3]

to MBo © ПРОСТО ОГРОМНОЕ СПАСИБО - ни то, ни другое я не учёл !!!

Попробовал со стандартным массивом (простите, что код на билдере)

TPoint a[5];
a[0] = TPoint(100,100);
a[1] = TPoint(50,20);
a[2] = TPoint(100,10);
a[3] = TPoint(200,80);
a[4] = TPoint(150,120);
a[5] = TPoint(110,160);
::PolyBezierTo(Canvas->Handle,&a[0], 5); - не работает

исправил на
::MoveToEx(Canvas->Handle, 100,100, 0);
::PolyBezierTo(Canvas->Handle,&a[0], 6);
- заработало !!!


Пример кода


 
Rel_   (2003-09-08 10:43) [4]

Возник ещё вопросик по данной теме:

В C# я видел, что в ф-ю, строящую кривую Безье можно передавать параметр точности, который определяет прилипание кривой к точкам. Если он очень велик, то получается почти полилиния с слегка сглаженным углами, если мал, то получается плавная кривая, прооходящая между точками.

Как энто реализовать в делфе или средствами API


 
MBo   (2003-09-08 10:54) [5]

>в C# я видел, что в ф-ю, строящую кривую Безье можно передавать параметр точности,

Там (GDIPlus) не Безье, а (кардинальные) сплайны.
Если не использовать GDIPlus, то можно самому рассчитать сплайны нужной формы, перевести их в форму Безье и отрисовать.
А заголовки GDIPlus лежат на http://www.progdigy.com.


 
ZEE   (2003-09-08 10:57) [6]

var a:array[0..5]of TPoint;
...
PolyBezierTo(Canvas.Handle, a,5);

понятно?..


 
panov   (2003-09-08 11:48) [7]

>Rel_ (08.09.03 10:43) [4]
Не надо спамить.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.09.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
4-58976
LambdA
2003-07-17 03:33
2003.09.18
Проблема со сменой разрешения экрана


1-58753
SIW
2003-09-06 16:40
2003.09.18
Проблема с прорисовкой...


1-58741
AlexSSS
2003-09-07 11:26
2003.09.18
Обработка виндозных сообщений


14-58829
Пан Сенюта
2003-08-30 16:38
2003.09.18
Что вы обо мне думаете?


1-58633
nomshar
2003-09-08 14:35
2003.09.18
Сетевое имя файла





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский