六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

在Delphi中使用DirectX

[摘要]Delphi作為一種方便的可視化程序設計語言,一 直非常受大家喜愛。但它在圖形處理、3D表現(xiàn)等方面 不很讓人滿意。如果說你要開發(fā)一個Windows95下的 3D游戲,你會用什么工具呢?DirectX...
Delphi作為一種方便的可視化程序設計語言,一 直非常受大家喜愛。但它在圖形處理、3D表現(xiàn)等方面 不很讓人滿意。如果說你要開發(fā)一個Windows95下的 3D游戲,你會用什么工具呢?DirectX!不少人會不加 思索地答道。然而接觸過DirectX的朋友們都知道它 內(nèi)部的結構復雜,一般來說結合VC開發(fā)是一個理想 的組合。而要在Delphi中利用DirectX SDK真是難上 加難。但現(xiàn)在一切都好啦,有了本文介紹的DelphiX 組件,你終于可以用你熟悉的Delphi來開發(fā)漂亮的圖 形程序了。
DelphiX是由日本人Hiroyuki Hori開發(fā)的使Di rectX5.0在Delphi中更容易使用的一套控件,從網(wǎng)上 下載時叫DelphiX.zip,837KB。解開后在bin目錄下 運行install_for?(根據(jù)你的Delphi版本號,支持3.0和 4.0),DelphiX會自動將控件安裝到你的Delphi中,幫 助文件也自動融合到Delphi的幫助里,真是好用極 了!
DelphiX包括的控件有如下這些:
TDXDraw 最重要的控件,是DirectDraw和Direct3D的基礎;
TDXDIB 一個代表DIB圖像的控件;
TDXImageList 代表一組 TPicture;
TDX3D Direct3D控件,要與TDXDraw共同使用;
TDXSound DirectSound控件;
TDXWave 一個代表波形Wave的控件;
TDXWaveList 一組Wave;
TDXInput 輸入控制控件(操縱鍵盤和搖桿要靠它);
TDXPlay 通訊控件;
TDXSpriteEngine “精靈”引擎;
TDXTimer 高速時間控件;
TDXPaintbox TDXForm 專為DelphiX優(yōu)化過的Form。

DirectDraw中重要的對象有:

TDirectDraw對象
DirectDraw應用程序的核心,它是你創(chuàng)建的第一個對象。創(chuàng)建了DirectDraw對 象后,可以在它的基礎上創(chuàng)建其它所有相關的對象。 在DelphiX中的TDXdraw.ddraw屬性即是一個Tdi rectDraw對象。

TDirectDrawSurface對象
表征了一塊內(nèi)存區(qū) 域,在該區(qū)域的數(shù)據(jù)將作為圖像顯示在屏幕上或移動 到其它表面上。

TDirectDrawPalette對象
表征了一個用于表面 的16色或256色的索引調(diào)色板,它包含了一系列描述 同表面相關的RGB顏色索引值。

TDirectDrawClipper對象
幫助你禁止向表面的 某一位置或超出表面的位置塊寫數(shù)據(jù)。

TSprite對象
代表了“精靈”,在許多視頻游戲都 使用了精靈。從最基本的意義上來講,一個精靈就是 在屏幕上移動的圖像。精靈畫在一個表面上,覆蓋在 已有的背景上,合成后的圖像被送到屏幕上顯示出 來,在DelphiX中通過TspriteEngine實現(xiàn)對Tsprite的 控制。

TDirectDrawSurfaceCanvas對象
提供方便的 訪問機制,你可以像訪問一般Canvas對象一樣訪問 它。TDXDraw.Surface.Canvas即是這樣一個對象。

TdirectDrawDisplay對象
控制著DirectDraw的 顯示模式,TdxDraw.display是這樣一個對象。
DelphiX基本上嚴格按照Microsoft DirectX SDK 開發(fā)包來將其功能在Delphi中實現(xiàn)出來。所以,如果 你對DirectX SDK比較熟悉的話,你會發(fā)現(xiàn)大多數(shù)程 序從C移植到Delphi是很容易的事。DelphiX中沒有 提供幫助的地方,你可以在DirectX SDK中獲得答 案。

下面通過一個簡單的例子對如何利用DelphiX編 程作一介紹,只涉及Ddraw二維的一小部分。
unit Unit1;
interface
uses
Windows.Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DXClass, DXDraws, DIB;
type
TForm1=class(TDXForm)
DXDraw1:TDXDraw;
DXTimer1:TDXTimer;
DXDIB1:TDXDIB;
procedure DXDrawlFinalize(Sender:TObject);
procedure DXDraw1Initialize(Sender:TObject);
procedure DXDraw1RestoreSurfase(Sender:TObject);
procedure DXTimer1Timer(Sendsr:TObject;LagCount:Integer);
procedure FormActivate(Sender:TObject);
private
{Private declarations}
public
{Public declarations}
private
Fsurface:TDirectDrawSurface;
end;
var
Form1:TForm1;
x,y:integer;
implementation
{$R *.DFM}
procedure TForm1.DXDrawlInitialize(Sender:TObject);
begin
FSurface:=TDirectDrawSurface.Create(DXDraw1.DDraw);
{創(chuàng)建抽象圖像表面}
end;
procedure TForm1.DXDraw1Finalize(Sender:TObject);
begin
FSurface.Free; FSurface: = nil;
{釋放表面}
end;
procedure TForm1.DXDraw1RestoreSurfare(Sender:TObject);
begin
FSurface.LoadfromGraphic(DXDIB1.DIB);{將位圖送入抽象表面}
end;
procedure TForm1.DXTimer1Timer(Sendsr.TObject;LagCount integer);
begin
if not DXDraw1.CanDraw then Exit;{在繪制之前檢驗是否允許}
DXDraw1.Surfaca.Fill(0);
x: = x + 1;
y: = y + 1;
DXDraw1.Surface.Draw(X, Y, FSurface.ClientRect,FSur face, True);
DXDraw1.Flip; {將內(nèi)存中的表面再將映射入實際顯存}
end;
procedure TForm1.FormActivate(Sender:TObject);
begin
X: =0;
y: =0;
end;
end.
首先要在程序開頭包含DXClass、DXDraws兩個 Unit(TDXtimer、TDXForm在DXClass中定義,TDX Draw在DXDraws中定義)。程序用的Form不要從一 般的TForm派生,而應從TDXForm中派生。在Form 中放入TDXDraw控件和TDXTimer控件,將其inter val值設為0。對DXDraw1控件改變其屬性,使其與 Form大小一致。再放人一個TDXDIB控件,在其屬性 中的DIB一項調(diào)人一個位圖,如Windows下的bub bles.bmp。定義一個DirectDraw表面Fsurface,這是一 個抽象內(nèi)存表面,以后會將它映射到DXDraw對象的 Surface上。在DXDraw的Events一欄中編寫OnIni tialize、OnFinalize、OnRestoreSurface三個過程,之后便 可以根據(jù)需要對表面進行操縱。
另外,要完成上面程序的功能,還有其他不少辦 法。例如利用TDXImageList對象,可以用它的方法 Imagelist.items[N].draw來完成同樣功能。
總之,DirectX博大精深,希望本文能為大家掀開 冰山的一角。DelphiX可以在pigprince的個人主頁上 找到,網(wǎng)址是Http://www.netease.net/~pigprins


主站蜘蛛池模板: 欧美笫一页 | 自拍网视频 | 日本在线高清视频 | 日韩毛片在线观看 | 越南一级淫片高清视频 | 日本一区二区三区久久 | 最近中文字幕无吗免费版 | 青青草原综合网 | 青草青青产国视频在线 | 伊人院 | 日本老年人精品久久中文字幕 | 日韩中文一区宇都宫紫苑 | 欧美一级免费大片 | 自拍视频在线观看视频精品 | 亚洲伊人久久大香线焦 | 亚洲福利视频一区二区三区 | 日日摸日日碰夜夜爽97纠 | 中文字幕日韩精品中文区 | 欧美亚洲h在线一区二区 | 中文天堂在线最新2022更新 | 青娱乐精品视频 | 亚洲码和乱人伦中文一区 | 色呦呦在线看 | 亚洲光棍天堂 | 日韩a毛片 | 在线看av网址 | 婷婷99精品国产97久久综合 | 日本中文在线观看 | 色香色香欲天天天影视综合网 | 四虎影院永久免费观看 | 亚洲a在线观看 | 欲色影视 | 在线观看h视频播放高清 | 午夜精品视频 | 亚洲五月六月丁香激情 | 天堂综合网| 四虎影库永久在线 | 四虎精品成人免费视频 | 中文字幕福利视频 | 午夜91| 午夜专区|