Недавно добавленные исходники

•  Animation Loaders  743

•  DeLiKaTeS Tetris (Тетрис)  5 736

•  TDictionary Custom Sort  7 688

•  Fast Watermark Sources  7 373

•  3D Designer  10 588

•  Sik Screen Capture  7 899

•  Patch Maker  8 130

•  Айболит (remote control)  8 179

•  ListBox Drag & Drop  6 978

•  Доска для игры Реверси  100 263

•  Графические эффекты  8 255

•  Рисование по маске  7 636

•  Перетаскивание изображений  6 237

•  Canvas Drawing  6 605

•  Рисование Луны  6 534

•  Поворот изображения  5 701

•  Рисование стержней  4 630

•  Paint on Shape  3 332

•  Генератор кроссвордов  4 310

•  Головоломка Paletto  3 458

•  Теорема Монжа об окружностях  4 279

•  Пазл Numbrix  2 771

•  Заборы и коммивояжеры  3 684

•  Игра HIP  2 487

•  Игра Go (Го)  2 476

•  Симулятор лифта  2 872

•  Программа укладки плитки  2 312

•  Генератор лабиринта  3 035

•  Проверка числового ввода  2 537

•  HEX View  2 948

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Advanced Draw



Оформил: XVeL
Автор: Daddy

Кручу-верчу, обмануть хочу, или как использовать продвинутые методы вывода спрайтов. В классе TSprite есть три метода: DoDraw, DoCollision и DoMove Чтобы заставить спрайт созданный таким образом:
TPlayer = class(TImageSprite)
end;
выводится через продвинутые методы (DrawRotate, DrawAplha, DrawSub, DrawWave, StretchDraw), нужно "заглушить" стандартный вывод при создании объекта. Вот так:
type
   THero = class(TImageSprite)
      Angle:integer;
   protected
      procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
      procedure DoMove(MoveCount: Integer); override;
      procedure DoDraw; override; // вот здесь
   end;
Теперь в процедуре DoDraw выводим спрайт нужным нам способом. Вот так:
procedure THero.DoDraw;
begin
   image.drawrotate(form1.DXDraw.Surface,round(x)+16,round(y)+16,image.width,image.height,round(animpos),0.5,0.5,Angle);
end;
Посмотрите этот dodraw.zip примерчик, для более ясного понимания. А теперь недокументированная фишка! Забываем то, что написано выше и читаем дальше. Cоздадим спрайт таким образом:
TPlayer = class(TImageSpriteEx)
protected
   procedure DoMove(MoveCount: Integer); override;
end;
И теперь в процедуре DoMove можно задать Angle (угол поворота спрайта) и Alpha (прозрачность спрайта). Примерно так:
type
   THero = class(TImageSpriteEx)
      Angle:integer;
   protected
      procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
      procedure DoMove(MoveCount: Integer); override;
   end;

procedure TPlayer.DoMove(MoveCount: Integer);
begin
   X:=100;
   Y:=100;
   Angle:=60;
   Alpha:=150;
end;
Дерзайте!




Похожие по теме исходники

Advanced ProgressBar

Draw Alpha

Draw PopupMenu

Draw Objects

 

Draw Pocker

RDraw

Thread Bitmap (pencil drawings)

Drawing Board

 

Drawer Panel

CheckListBox Draw




Copyright © 2004-2026 "Delphi Sources" by «SiteAnalyzer». Delphi World FAQ

Группа ВКонтакте