Главная страница
    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.012 c
14-58897
Жук
2003-08-29 08:46
2003.09.18
Результаты жеребьёвки ЛЧ


3-58588
Cuckoo
2003-08-26 18:40
2003.09.18
ПОМОГИТЕ НОВИЧКУ!!!


1-58725
titnn
2003-09-07 09:00
2003.09.18
а как бы это по красивее сделать ...


7-58926
Drongo
2003-07-07 11:48
2003.09.18
Как получить список всех программ установленных на компьютере


1-58679
McMurfy
2003-09-04 19:00
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский