Главная страница
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.021 c
3-58533
andy-ivt
2003-08-28 12:52
2003.09.18
Доступ к БД IB по сети


1-58662
Olvin
2003-09-03 08:44
2003.09.18
Как отправить *.prn файл на один из принтеров установленных в сис


1-58641
Алексей Петухов
2003-09-05 11:26
2003.09.18
запрет на редактирование в StringGrid


1-58626
Meg100
2003-09-05 14:35
2003.09.18
Word & Delphi


14-58895
BALU1111
2003-08-29 14:01
2003.09.18
Философский вопрос.