|
12.12.2009, 13:41
|
#1
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Lib_bezier - Рисование кривой Безье
Библиотека для рисования кривой Безье по координатам трех точек.
DrawBezier(x1: integer; y1: integer; x2: integer; y2: integer; x3: integer; y3: integer) - Нарисовать кривую Безье по координатам трех точек
x1, y1 - координаты первой точки
x2, y2 - координаты второй точки
x3, y3 - координаты третьей точки
При рисовании используется текущий установленный цвет
Результат работы программы, описанной ниже:
Простейший пример рисования кривой:
Program BezierDemo; Uses Bezier; Var x1, x2, x3, y1, y2, y3: integer; Begin // Задаем точки для нормалей x1:=0; y1:=0; x2:=100; y2:=50; x3:=10; y3:=150; // Рисуем нормали - так, для прикола SetColor(200, 200, 200); DrawLine(x1, y1, x2, y2); DrawLine(x2, y2, x3, y3); SetColor(255, 0, 0); // Рисуем кривую Безье DrawBezier(x1, y1, x2, y2, x3, y3); // Перерисовка экрана и ждем 5 сек Repaint; Delay(5000); End.
|
(Offline)
|
|
Эти 6 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
|
|
13.12.2009, 14:40
|
#2
|
Бывалый
Регистрация: 18.08.2009
Сообщений: 745
Написано 146 полезных сообщений (для 215 пользователей)
|
Ответ: Lib_bezier - Рисование кривой Безье
крууто...
теперь на теории можно сделать векторный граф редактор на МП, но на практике слишком сложно...
|
(Offline)
|
|
18.12.2009, 02:16
|
#3
|
Оператор ЭВМ
Регистрация: 07.12.2009
Адрес: Мытищи
Сообщений: 44
Написано 6 полезных сообщений (для 6 пользователей)
|
Ответ: Lib_bezier - Рисование кривой Безье
А есть ли что-то вроде lib_graf? Там... Толщину линий изменить, треугольник нарисовать...
|
(Offline)
|
|
12.01.2010, 01:21
|
#4
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Lib_bezier - Рисование кривой Безье
Толщину линии можно изменить с помощью вывода нескольких одинаковых кривых с шагом в 1 пиксел вверх или вправо.
|
(Offline)
|
|
26.07.2010, 20:40
|
#5
|
Знающий
Регистрация: 16.09.2008
Сообщений: 299
Написано 71 полезных сообщений (для 123 пользователей)
|
Ответ: Lib_bezier - Рисование кривой Безье
Интересная либа, решил переписать на MP:
procedure drawBezier(x1,y1,x2,y2,x3,y3,count : integer);
var
i,j,x,y,xx,yy : integer;
begin
x := x1;
y := y1;
for i := 0 to count do
begin
j := count-i;
xx := ((x1 * j * j) + (x2 * 2 * i * j) + (x3 * i * i)) div (count*count);
yy := ((y1 * j * j) + (y2 * 2 * i * j) + (y3 * i * i)) div (count*count);
drawLine(x,y,xx,yy);
x := xx;
y := yy;
end;
drawLine(x,y,x3,y3);
end;
var
x1, x2, x3, y1, y2, y3: integer;
begin
// Задаем точки для нормалей
x1:=0; y1:=0;
x2:=100; y2:=50;
x3:=10; y3:=150;
// Рисуем нормали - так, для прикола
setColor(200, 200, 200);
drawLine(x1, y1, x2, y2);
drawLine(x2, y2, x3, y3);
setColor(255, 0, 0);
// Рисуем кривую Безье
drawBezier(x1, y1, x2, y2, x3, y3,30);
// Перерисовка экрана и ждем 10 сек
repaint;
delay(10000);
end.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо abcdef за это полезное сообщение:
|
|
26.07.2010, 22:20
|
#6
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
Ответ: Lib_bezier - Рисование кривой Безье
Неплохо
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
29.07.2010, 13:57
|
#7
|
Знающий
Регистрация: 20.03.2010
Сообщений: 271
Написано 16 полезных сообщений (для 32 пользователей)
|
Ответ: Lib_bezier - Рисование кривой Безье
Program PointerTest; Uses sensor,Bezier; ; Var ox, oy, px, py, state: integer; Begin sensor.init; // Инициализация библиотеки repeat // Бесконечный цикл state:=pointer_state; // Читаем состояние сенсора if state=1 then // Если нажали, то... begin if (ox=0) and (oy=0) then begin ox:=pointer_dragged_x; oy:=pointer_dragged_y; end; // Выясняем куда именно нажали (координаты) px:=pointer_dragged_x; py:=pointer_dragged_y; // Рисуем кривую Безье DrawBezier(ox, oy, 0, 0, px, py); // Запоминаем предыдущую точку для рисования следующей линии ox:=px; oy:=py; end; // Если ничего не нажали - сбрасываем координаты в 0 else begin ox:=0; oy:=0; end; Repaint; Delay(20); // Отрисовка линии и небольшая пауза until false; End.
в чем ошибка делаю все правильно
__________________
¯¯¯¯\——-/¯¯¯¯ респект любителям BMX
|
(Offline)
|
|
14.08.2010, 15:41
|
#8
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Lib_bezier - Рисование кривой Безье
Вместо dragged используй pressed.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:13.
|