Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.18;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.022 c
1-58742
Игорь Николаев
2003-09-07 10:17
2003.09.18
2-мерный массив


3-58568
KIR
2003-08-27 12:44
2003.09.18
Реален ли такой запрос?


3-58556
pvv
2003-08-28 17:13
2003.09.18
Отключение прокручивания в DBGride


14-58877
Golovanov
2003-08-29 20:08
2003.09.18
Вниманию пользователей провайдера МТУ-интел


14-58874
Экселенц
2003-08-24 18:29
2003.09.18
AIM