Главная страница
    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.008 c
3-58595
scorps
2003-08-26 16:38
2003.09.18
Delphi - Oracle


3-58598
Юлия
2003-08-26 12:44
2003.09.18
Как перехватить ошибку?


6-58814
Ossa
2003-07-15 15:18
2003.09.18
у меня вопрос по удаленному доступу через модем


14-58828
Igorek
2003-08-30 15:34
2003.09.18
Ну и про меня замолвите словечко


1-58624
Abikos
2003-09-05 15:14
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский