Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кривая Безье, Подсажите как нарисовать кривую Безье 
:(
    Опции темы
бизон
Дата 29.6.2006, 19:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.5.2006

Репутация: нет
Всего: нет



Подсажите как нарисовать кривую Безье. В Дельфе есть функция для вывода кривой Безье, но нигде не могу найти пример ее использования. Заранее спасибо. 
PM MAIL   Вверх
DragonFire
Дата 29.6.2006, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: 1
Всего: 9



Вот так:
Код

program Paint;
uses
   Windows, Messages;

const
  AppName = 'WinPaint';

Var
  Window : HWnd;
  Message : TMsg;
  WindowClass : TWndClass;

function WindowProc (Window : HWnd; Message, WParam : Word;
         LParam : LongInt) : LongInt; stdcall;
Const
  Points : Array [0..3] of TPoint =
     ((x:5; y:5), (x:20; y:70), (x:80; y:15), (x:100; y:90));
Var
  dc : HDC;
  MyPaint : TPaintStruct;
  i : Integer;
Begin
  WindowProc := 0;
  case Message of
       wm_Destroy : begin
                    PostQuitMessage (0);
                    Exit;
                    end;
       wm_Paint:    begin { сообщение посылается при необходимости перерисовки окна }
                    dc := BeginPaint (Window, MyPaint); { получить контекст устройства }
                    PolyBezier (dc, Points, 4);
                    For i := 0 to 3 do
                    Ellipse (dc, Points [i].x - 3, Points [i].y - 3,
                             Points [i].x + 3, Points [i].y + 3);
                    EndPaint (Window, MyPaint); { завершение операции по отображению в окне }
                    ReleaseDC (Window, dc); { освобождает контекст }
                    end;
  end; // case
  WindowProc := DefWindowProc (Window, Message, WParam, LParam);
End;

Begin
  With WindowClass do begin
   Style := cs_DblClks;
   lpfnWndProc := @WindowProc;
   cbClsExtra := 0;
   cbWndExtra := 0;
   hInstance := 0;
   hIcon := LoadIcon (0, idi_Application);
   hCursor := LoadCursor (0, idc_Arrow);
   hbrBackground := GetStockObject (White_Brush);
   lpszMenuName := '';
   lpszClassName := AppName;
  end;
  If RegisterClass (WindowClass) = 0 then Halt (255);
  Window := CreateWindow (AppName, 'Кривая Безье',
   ws_OverlappedWindow, 100, 100, 250, 150, 0, 0, HInstance, nil);
  ShowWindow (Window, CmdShow);
  UpdateWindow (Window);
  While GetMessage (Message, 0, 0, 0) do begin
    TranslateMessage (Message);
    DispatchMessage (Message);
   end;
  Halt (Message.wParam);
End.

Собственно само рисование происходит с помощью функций GDI и вот кусок, который рисует (пример рабочий я привел)
Код

PolyBezier (dc, Points, 4);
For i := 0 to 3 do Ellipse (dc, Points [i].x - 3, Points [i].y - 3, Points [i].x + 3, Points [i].y + 3);
 


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0393 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.