Entwickler-Ecke
Multimedia / Grafik - Wie kann ich ein Auto in ein VCL einfügen?
Sputyyy - Mo 10.01.11 16:07
Titel: Wie kann ich ein Auto in ein VCL einfügen?
Hallo Leute!
Ich muss ein Autorennen programmieren und wollte Fragen wie es geht, dass ich ein Auto als Grafik einfügen kann, dass sich dann auch bewegt.
Vielen Dank im Voraus.
Moderiert von
Martok: Topic aus Sonstiges (Delphi) verschoben am Mo 10.01.2011 um 15:25
Moderiert von
Martok: Text entfärbt und entformatiert
jaenicke - Mo 10.01.11 16:14
Kleiner Tipp an folgende Leser: Einfach alles markieren, dann kann man den versteckten Text lesen. :roll: :autsch:
Schreibst du auch mit Tipp-Ex auf weißem Papier?
Sputyyy hat folgendes geschrieben : |
Ich muss ein Autorennen programmieren und wollte Fragen wie es geht, dass ich ein Auto als Grafik einfügen kann, dass sich dann auch bewegt. |
(Farbe entfernt...)
Wo ist denn das konkrete Problem?
Ich meine es gibt viele Möglichkeiten.
Nun gut:
Du kannst z.B. eine TPaintBox nehmen und in OnPaint oder bei einer Bewegung das Auto an die gewünschte Stelle zeichnen. Meinst du das?
Sputyyy - Mo 10.01.11 16:19
Ich möchte ein Auto aus dem Internet einfügen.
jaenicke - Mo 10.01.11 16:21
Meinst du eins aus einem Automarkt?
Im Ernst: Was genau möchtest du denn machen und wo ist das Problem?
Willst du mit deinem Programm ein Bild eines Autos herunterladen und auf deinem Formular darstellen? Wie wäre es mit TIdHttp zum Download?
Sputyyy - Mo 10.01.11 16:28
Ich habe jetzt ein TShape Objekt eingefügt, möchte aber statt diesem ein kleines Spielzeugauto oder dergleichen einfügen damit es einfach besser aussieht. Dieses Auto soll dann von der einen Seite zur anderen fahren.
jaenicke - Mo 10.01.11 16:30
Wie ich schon sagte:
jaenicke hat folgendes geschrieben : |
Du kannst z.B. eine TPaintBox nehmen und in OnPaint oder bei einer Bewegung das Auto an die gewünschte Stelle zeichnen. |
Tilman - Mo 10.01.11 16:40
Für einen Anfänger würde ich allerdings TImage eher empfehlen. Du findest die Komponente in der Seite "Zusätzlich". Im ObjektInspektor einfach auf die drei kleinen Punkte bei "Picture" klicken, und dein Bild auswählen. Es wird dann automatisch ins Delphi-Programm geladen und steht zur Verfügung.
HenryHux - Mo 10.01.11 20:43
Hi,
ich würde es auch mit einem TImage machen.
Für Bitmaps geht das so img1.picture.loadfromfile('C:\test.bmp') .
Willst du das mit einem JPeg machen, musst du vorher ganz oben bei den Uses JPEG dazuschreiben.
Viel Glück
Tilman - Mo 10.01.11 20:50
HenryHux hat folgendes geschrieben : |
Für Bitmaps geht das so img1.picture.loadfromfile('C:\test.bmp') |
So sollte man es nicht machen! Entweder so wie ichs oben geschrieben habe, im OI über die drei Punkte (dann ist das Bild mit in der EXE drin, und muss nicht weiter verteilt werden), oder so wie du es sagst über loadfromfile, aber dann mit
relativem Pfad (bilder\test.bmp), nicht mit absolutem Pfad (C:\...). Denn dann funktioniert das Programm hinterher nur bei einer Person, auf einem Computer ;)
Gausi - Mo 10.01.11 20:57
Tilman hat folgendes geschrieben : |
So sollte man es nicht machen! [...], oder so wie du es sagst über loadfromfile, aber dann mit relativem Pfad (bilder\test.bmp), nicht mit absolutem Pfad (C:\...). Denn dann funktioniert das Programm hinterher nur bei einer Person, auf einem Computer ;) |
Bitte.
NIEMALS mit relativen Pfaden bei sowas arbeiten.
NIE. Das ist ganz großes Pfui!
Immer mit vollständigen Pfaden arbeiten, die man ggf. selbst zusammenbastelt, indem man über
ExtractFilePath(ParamStr(0)) den Pfad zur Anwendung bestimmt. Wenn man relative Pfade verwendet, und dann mal einen Open- oder SaveDialog verwendet, dann sucht man sonst erstmal den Fehler, warum das plötzlich nicht mehr funktioniert.
jaenicke - Mo 10.01.11 21:18
Gausi hat folgendes geschrieben : |
Wenn man relative Pfade verwendet, und dann mal einen Open- oder SaveDialog verwendet, dann sucht man sonst erstmal den Fehler, warum das plötzlich nicht mehr funktioniert. |
Auch wenn sich nicht besonders viele außerhalb von Firmen so sehr drum kümmern: Nicht nur das, man produziert auch Sicherheitslücken.
Nur als Beispiel:
Ich schreibe eine Anwendung, die Adminrechte benötigt. Das weiß der Benutzer und verteilt diese auch. Diese Anwendung startet ein anderes Tool, aber leider mit relativem Pfad. Jetzt muss ich als Angreifer nur noch die Verknüpfung mit der Exe ändern, damit das Arbeitsverzeichnis auf meine Angreifer-Exe zeigt, schon wird die gestartet und ich habe Adminrechte.
Oder das bekannt gewordene Problem mit untergeschobenen DLLs im Arbeitsverzeichnis. Oder oder...
Tilman - Mo 10.01.11 21:20
Zitat: |
ExtractFilePath(ParamStr(0)) |
Das ist trotzdem relativ (oder vielleicht "Dynamisch") ;) aber du hast völlig recht, ich mach das ja selbst auch immer so, hatte das irgendwie im Eifer des Gefechts vergessen. Application.exename geht auch.
//edit bzw. ich hatte es nicht nur Vergessen, ich hatte ja eh keinen Code gepostet - daher stimmt mein Post, auch wenn er auf eine Wichtige Information zum implementieren nicht eingegangen ist ;)
jaenicke - Mo 10.01.11 21:30
Tilman hat folgendes geschrieben : |
Das ist trotzdem relativ |
Nein, ein absoluter Pfad. Relativ ist nur der Teil nach dem ExtractFilePath, nämlich relativ zu eben diesem Pfad. ;-)
c:\test.bmp --> fester Pfad
test.bmp --> relativer Pfad
ExtractFilePath(...)\test.bmp --> absoluter Pfad
Aber wir schweifen ab. :D
Sputyyy - Di 11.01.11 16:12
okay ^^
sorry wegen dem Pfad.
aber danke für die Antworten. Ich habs endlich geschafft ^^
:D :D :D
jaenicke - Di 11.01.11 16:13
Sputyyy hat folgendes geschrieben : |
sorry wegen dem Pfad. |
Der kam ja nicht von dir. :mrgreen:
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!