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

•  DeLiKaTeS Tetris (Тетрис)  3 814

•  TDictionary Custom Sort  5 921

•  Fast Watermark Sources  5 724

•  3D Designer  8 504

•  Sik Screen Capture  6 061

•  Patch Maker  6 501

•  Айболит (remote control)  6 491

•  ListBox Drag & Drop  5 352

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

•  Графические эффекты  6 694

•  Рисование по маске  5 829

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

•  Canvas Drawing  5 250

•  Рисование Луны  4 974

•  Поворот изображения  4 521

•  Рисование стержней  3 201

•  Paint on Shape  2 446

•  Генератор кроссвордов  3 318

•  Головоломка Paletto  2 630

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

•  Пазл Numbrix  2 258

•  Заборы и коммивояжеры  2 917

•  Игра HIP  1 885

•  Игра Go (Го)  1 802

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

•  Программа укладки плитки  1 867

•  Генератор лабиринта  2 308

•  Проверка числового ввода  1 993

•  HEX View  2 305

•  Физический маятник  1 964

 
скрыть

  Форум  

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

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



Delphi Sources

Методы вывода спрайтов



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

В этой статье мы рассмотрим методы вывода спрайтов на экран.

1. Draw - Стандартная функция вывода
Draw(X,Y: Integer; Source: TDirectDrawSurface; Transparent: Boolean)
X,Y - координаты.
TDirectDrawSurface - поверхность (DXDraw.Surface)
Transparent - видимость

2. StretchDraw - Вывод со "скалированием", т.е. с изменением размера исходного спрайта
StretchDraw(constDestRect:TRect;Source:TDirectDrawSurface;Transparent:Boolean=True)
TRect:
Top : integer;
Bottom : integer;
Left : integer;
Right : integer;
или просто
TopLeft : Тpoint
BottomRight : Tpoint

одним словом записи:
rect.TopLeft.X:=100;
rect.TopLeft.Y:=200;
и
rect.Left:=100;
rect.Top:=200
абсолютно равны.

Небольшой примерчик:
procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
const k:integer=0; n:integer=0;
var rect:trect;
begin
   if not DXDraw.CanDraw then exit;
   if n = 10 then k:=-1;
   if n = 0 then k:=1;
   n:=n+k;
   rect.left:=10;
   rect.right:=10*n;
   rect.top:=10;
   rect.bottom:=10*n;
   DXDraw.Surface.Fill(0);
   DXIMageList.Items.Find('1').StretchDraw(DXDraw.Surface,rect,0);
   DXDraw.Flip
end;

3. DrawAlpha - Выводит с прозрачностью, так-же параллельно можно делать stretch
DrawAlpha(const DestRect,SrcRect:TRect;Source:TDirectDrawSurface;Transparent:Boolean;Alpha:Integer);
Значение Alpha изменяется в пределах от 0 до 255.

Небольшой примерчик:
Киньте какой-нибудь фон, сразу будет видно прозрачность.

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
const k:integer=0; n:integer=0;
var rect:trect;
begin
   if not DXDraw.CanDraw then exit;
   if n = 10 then k:=-1;
   if n = 0 then k:=1;
   n:=n+k;
   rect.left:=50-n*5;
   rect.right:=50+n*5;
   rect.top:=50-n*5;
   rect.bottom:=50+n*5;
   DXDraw.Surface.Fill(0);
   DXIMageList.Items.Find('1').DrawAlpha(DXDraw.Surface,rect,0,n*25);
   DXDraw.Flip
end;

Все остальное чуть позже.
4. DrawAdd : Хорошо подходит для создания эффектов. Вспышек, взрывов.:

5. DrawSub : Хорошо подходит для создания теней.:

6. DrawRotate : Вывод с поворотом исходного спрайта:

DrawRotate(Dest: TDirectDrawSurface; X, Y, Width, Height, PatternIndex: Integer; CenterX, CenterY: Double; Angle: Integer);

CenterX,CenterY - ось вращения.
При CenterX и CenterY равных 0 ось проиходит через левый-верхний угол спрайта
При CenterX и CenterY равных 0.5 ось проиходит через центр спрайта
При CenterX и CenterY равных 1 ось проиходит через правый-нижний угол спрайта
Angle - угол поворота, изменяется от 0 до 255

Небольшой примерчик:

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
const k:integer=0; n:integer=0;
begin
   if not DXDraw.CanDraw then exit;
   if n = 256 then k:=-1;
   if n = 0 then k:=1;
   n:=n+k;
   DXDraw.Surface.Fill(0);
   DXIMageList.Items.Find('1').DrawRotate(DXDraw.Surface,50,50,50,50,0,0.5,0.5,n);
   DXDraw.Flip
end;
7. DrawRotateAlpha : Вывод с поворотом исходного спрайта + Alpha:

8. DrawRotateAdd : Вывод с поворотом исходного спрайта +

9. DrawRotateSub : Вывод с поворотом исходного спрайта + Sub







Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

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