Как сделать калькулятор в Delphi?

Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.

Как Delphi реализует многоплатформенную разработку?

Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...

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

Статьи » Графика и игры » Методы вывода спрайтов

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


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 © 2024 - All Rights Reserved - www.delphirus.com