![]() |
DelphiX für Anfänger (1)
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
hier mal mein versprochenes Tutorial. Los geht's! Kapitel 1 Dieser Kurs soll euch den Umgang mit DelphiX etwas leichter machen. Was ist DelphiX? DelphiX ist eine Komponentengruppe von Hiroyuki Hori, die DirectX in Delphi 3, 4 und 7 einbindet. Durch diese Komponenten wird der Einstieg in die DirectX Programmierung erleichtert. DelphiX enthält folgende Komponenten: (Siehe Anhang, "Komponenten.jpg") Hier noch einmal beschrieben: (Siehe Anhang, DXDraw.jpg) DXDraw ist die Verknüpfung mit DirectDraw und Direct3D. In diesem Display werden die Programme/Spiele erstellt. (Siehe Anhang, DXDib.jpg) DXDib dient dazu, um ein Bild zu speichern (Device independent bitmap = DIB). (Siehe Anhang, DXImageList.jpg) DXImageList ist Liste von Bildern. Wird verwendet um Animationen zu erstellen. (Siehe Anhang, DX3D.jpg) DX3D ist eine Direct3D Komponente. (Siehe Anhang, DXSound.jpg) DXSound wird für die Sound Aufnahme verwendet oder zum abspielen. Verknüpfung mit DirectSound. (Siehe Anhang, DXWave.jpg) DXWave dient als Speicher für eine Wave Datei. (Siehe Anhang, DXWaveList.jpg) DXWaveList dient als Speicher für mehrere Wave Dateien. (Siehe Anhang, DXInput.jpg) DXInput ist eine Verknüpfung mit der DirectInput Komponente und wird verwendet, um Ereignisse von Eingabegeräten (Maus, Tastatur, Joystick) zu bekommen. Es können auch Feedback Effekte an spezielle Joysticks gesendet werden. (Siehe Anhang, DXPlay.jpg) DXPlay wird für die Kommunikation zwischen Computern (TCP/IP, IPX, Seriell, Modem) verwendet. Verknüpfung mit DirectPlay Komponente. (Siehe Anhang, DXSpriteEngine.jpg) DXSpriteEngine dient dazu, um Sprites zu erzeugen und zu steuern. (Siehe Anhang, DXTimer.jpg) DXTimer ist ein High-Speed Timer und dient als eine alternative zum TTimer. (Siehe Anhang, DXPaintBox.jpg) DXPaintBox ist eine DIB Version von TPicture. Kapitel 2 Als erstes werde ich zeigen, wie man Bilder (noch keine Animationen) darstellen und bewegen kann. Bilder darstellen Zuerst wir mit DXDraw eine Fläche erstellt, auf der die Bilder angezeigt werden sollen. Dazu klickt man auf das Symbol und zieht dann auf dem Formular bei gedrückter linker Maustaste ein Rechteck. Danach fügt maneine DXImageList Komponente ein. Stellt bei DXDraw unter Eigenschaften bei Align alClient ein. Es sollte dann etwa so aussehen: (Siehe Anhang, Form1.jpg) Damit die DXImageList Komponente weiß, wo das Bild angezeigt werden sollen, muss man der Eigenschaft DXDraw "DXDraw1" (bzw. den Namen der DXDraw Komponente) zuweisen. Nun laden wir ein Bild in die DXImageList Komponente. Dazu klicken wir auf die Eigenschaft Items. Folgendes Fenster öffnet sich: (Siehe Anhang, ImageList.Item.jpg) Um ein neues Bild hinzuzufügen, klickt man auf das Linke Symbol. Mit der Eigenschaft "Picture" kann man ein Bild laden (Load-Button, Bild auswählen, TDIB-Button, OK). Gebt dem Bild den Name "Test" (Eigenschaft: Name). Man sieht nun in dem DXImageList-Fenster 0 - Test, d.h. unser Bild mit dem Namen "Test" hat die Item Nummer 0. Wenn man will, kann man eine Farbe als Transparent festlegen. Dazu wählt man in der Eigenschaft TransparentColor eine Farbe aus und schaltet die Eigenschaft Transparent auf True. In das Ereignis OnClick der DXDraw Komponente schreiben wir folgendes:
Delphi-Quellcode:
Was bedeutet das?
procedure TForm1.DXDraw1Click(Sender: TObject);
begin if not DXDraw1.CanDraw then Exit; DXImageList1.Items[0].draw(DXDraw1.Surface, 0, 0, 0); DXDraw1.Flip; end; Also, die erste Zeile bedeutet, dass Delphi sofort aufhört weiter zu machen, wenn er nichts auf dem DXDraw Feld zeichnen kann. Die zweite Zeile ist wichtiger. Sie sagt, dass Delphi aus DXImageList das erste Bild (Item[0]) holen soll. In der Klammer steht, wo das Bild angezeigt werden soll (DXDraw1.Surface), die X-Koordinate, die Y-Koordinate und den PatternIndex (ist bei einem Bild immer 0; Dazu später mehr). Zusammengefasst:
Code:
Die Letzte Zeile bedeutet, dass DXDraw das Bild "flipped", d.h. die DXDraw Oberfläche neu zeichnet und das Bild darstellt.
DXImageList1.Items[Nummer].draw(Wo, X-Koordinate, Y-Koordinate, PatternIndex);
Nun startet das Programm mit Drücken auf F9. Wenn ihr nun auf das schwarze Feld drückt, erscheint euer Bild. Der nächste Beitrag folgt in Kürze. MfG Marc ![]() P.S.: Dieses Tutorial hat "MiGa" erstellt. Es wurde von meiner Wenigkeit ein weing abgeändert. [edit=Admin]Code-tags in Delphi-Tags geändert. ;-) Mfg, Daniel[/edit] [edit=sakura] Auf Wunsch Links zu den Tutorial 2 hinzugefügt. Mfg, sakura[/edit] |
Re: DelphiX für Anfänger (1)
Liste der Anhänge anzeigen (Anzahl: 1)
Also bei mir Funzt das ned. Guck bitte mal meinen Anhang an.
(Habs ein bissl anderst gemacht) Grüsse MiniKeks |
Re: DelphiX für Anfänger (1)
Wenn ich mich nicht völlig irre, ist das genau das Tutorial vom ehemaligen Delphi-treff, nur halt, dass die bilder jetzt alle im anhang sind und nicht sofort angezeigt werden... oder irre ich mich da? :gruebel:
|
Re: DelphiX für Anfänger (1)
Zitat:
|
Re: DelphiX für Anfänger (1)
Hi MiniKeks,
hast du mit meinem Tut gearbeitet? In deinem Programm ist ein Timer, der Quellcode ist auch anders, bei Transparent sollte True stehen und bei Transparent Color solltest du eine Farbe auswählen. Lies dir am besten mein Tut noch einmal durch. MfG Marc P.S.: Schönes Bild! :mrgreen: |
Re: DelphiX für Anfänger (1)
Hi,
@Malo geht aber auch im OnActivate. Es liegt daran das es Jpeg ist. |
Re: DelphiX für Anfänger (1)
Gell malo, lies nochmal :D
Ich habs wenigstens auf anhieb verstanden ;) hehe Gruss MiniKeks |
Re: DelphiX für Anfänger (1)
Zitat:
|
Re: DelphiX für Anfänger (1)
Delphi-Quellcode:
damit das funktioniert müsste es so geänder werden:
procedure TForm1.DXDraw1Click(Sender: TObject);
begin if not DXDraw1.CanDraw then Exit; DXImageList1.Items[0].draw(DXDraw1.Surface, 0, 0, 0); DXDraw1.Flip; end; nimm eine DXTimer komponente stelle denn interval auf 0 ein und und packe in das OnTimer ereignis diesen code von oben rein dann sollte es funktionieren. und wenn du eine jpeg einbindes musst du die unit jpeg in die uses mit einbinden. der erste interger in der draw funktion ist die x postion und der zweite die y postion und der dritte ist der pattenindex(solltes du mehre bilder in einer grafik haben sollten sie auch alle gleich groß sein dann musst du in DXListItems PattenW*... und PattenH entpsrechend einstelln. achja und vergesse nich die DXListImage mit der DXdraw komponente zu verknüpfen ! |
Re: DelphiX für Anfänger (1)
Frage:
Ich habe unter Delphi 7 Personal auf W2k SP4 und WXP Pro SP2 DelphiX (für D7) installiert, und dies auch ohne Fehlermeldungen geschafft. Leider funktioniert das Codebeispiel trotzdem nicht. Es lässt sich compilen, das OnCLick Ereignis reagiert auch entsprechend, blöderweise werden die DXDraw-Funktionen jedoch quasi ignoriert. Es ist nicht mehr als eine schwarze Zeichenfläche zu sehen. Any Ideas? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz