![]() |
Während ein Programm läuft, Image hinzufügen
Hallo!
Ich habe ein Problem: Während mein Programm läuft, soll in einer Textdatei gelesen werden. Dort soll dann z.B. das wort image stehen. Immer wenn mein Programm das liest, soll es ein neues Image erstellen, und zwar an den Koordinaten, die dann da hinter stehen sollen und mit dem Bild (Pfad soll dann dort stehen) und natürlich auch in der richtigen Größe. Könnt ihr mir da helfen? MfG zapper54 |
Re: Während ein Programm läuft, Image hinzufügen
Wo ist denn das Problem dabei?
|
Re: Während ein Programm läuft, Image hinzufügen
Statt einer einfachen Textdatei würde ich dir für so etwas eine INI empfehlen. Ansonsten würde ich die Koordinaten in der normalen Textdatei auch nicht hinter das Wort 'Image' schreiben, sondern jeweils in eine Zeile.
|
Re: Während ein Programm läuft, Image hinzufügen
Ich gehe jetzt mal davon aus, dass du die Werte so in einer Textdatei stehen hast:
Name des Objekts Left-Koordinate Top-Koordinate Width Heigth Beispiel: Image1 100 100 200 150
Delphi-Quellcode:
Ich hoffe so sollte es sein...
Uses ...,extctrls;
//In der Variablendeklaration: var //Ich verwende jetzt mal eine Stringlist, um die Datei zu laden SL:TStringlist; //Um ein dynamisches Objekt zur Laufzeit zu erstellen, ein TImage in einer Variable deklarieren Objekt:TImage; //Jetzt muss die Datei geladen werden. Ich mache es beim Klick auf einen Button procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin SL:=TStringlist.create; SL.LoadFromFile('Test.txt'); i:=0; //Erste Zeile der Stringlist wird durch SL[0] angesprochen (Immer -1) //Objekte erstellen durch eine Schleife while i<SL.count do begin Objekt:=TImage.create(Form1); Objekt.name:=SL[i]; //Name des Objekts wird aus der Liste ausgelesen Objekt.Left:=StrToInt(SL[i+1]); //Leftwert befindet sich eine Zeile hinter dem Namen Objekt.Top:=StrToInt(SL[i+2]); //Topwert befindet sich zwei Zeilen hinter dem Namen Objekt.Width:=StrToInt(SL[i+3]); Objekt.Height:=StrToInt(SL[i+4]); Objekt.parent:=Form1; Objekt.show; Objekt.Canvas.FloodFill(1,1,clblack,fsSurface); //Das musst du halt ersetzen, ein Bild reinladen oder sonst was i:=i+5; //Springt zum nächsten Namen in der Liste end; end; Liebe Grüße! |
Re: Während ein Programm läuft, Image hinzufügen
@Delphi-Narr:
Sieht ganz gut aus, ich habe aber noch eine Frage: Ich würde die Textdatei mit
Delphi-Quellcode:
Soweit erstmal. Sagt mir bitte, wenn das aus irgendeinem Grund nicht geht.
var
f:textfile; s:string; assaignfile(f,'C:\geheim.txt'); reset(f); //Damit ich auch die 1. Zeile lese readln(f,s); closefile(f); Jetzt verstehe ich das aber nicht, wie du das mit der Liste machst. Ich habe noch nie mit Listen gearbeitet... Geht es vielleicht auch einfacher, und nicht so umständlich wie Zitat:
Danke schonmal für eure Antworten. |
Re: Während ein Programm läuft, Image hinzufügen
Zitat:
Achtung: Zeichenbefehle nur in Paint()-Methode ausführen, denn sonst wird beim Neuzeichnen ( beim Verschieben, nach Übdedeckung usw.) deine Zeichnung gelöscht. |
Re: Während ein Programm läuft, Image hinzufügen
Ok, aber mit diesen Methoden selbsterstellen... Wie macht man das?
|
Re: Während ein Programm läuft, Image hinzufügen
Wann soll ein neues erzeugt werden?
|
Re: Während ein Programm läuft, Image hinzufügen
Wenn eine Bedingung erfüllt ist, wie z.B. Wenn mein Mauszeiger inerhalb eines Quadrates ist.
|
Re: Während ein Programm läuft, Image hinzufügen
Du kannst das natürlich auch mit Textfile machen...
Du lädst die Textdatei in die Liste und kannst dann über Sl[Zahl] auf eine bestimmte Zeile der Datei zugreifen. Du kannst natürlich ein Image erstellen, ohne das Ganze immer einzelnd zu machen. Hier eine allgemeine Prozedur ohne eine neue Methode zu erstellen:
Delphi-Quellcode:
So würde dann der Aufruf aussehen:
procedure TForm1.ErstelleImage(Fuer:TForm;aLeft,aTop,aWidth,aHeight:integer; Quelle:string; Strecken:Boolean);
var I:TImage; begin I:=TImage.create(Fuer); I.left:=aLeft; I.Top:=aTop; I.width:=aWidth; I.height:=aHeight; if FileExists(Quelle) then I.Picture.Bitmap.LoadFromFile(Quelle); I.parent:=Fuer; I.Stretch:=Strecken; end;
Delphi-Quellcode:
Hierbei würde ein Image auf Form1 mit Left, Top, Width und Height = 100 erstellt. Es würde ein Bild aus der Datei "a.bmp" geladen und dieses würde auf die Größe des Images gestreckt werden...
ErstelleImage(Form1,100,100,100,100,'a.bmp',True);
Liebe Grüße! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:01 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-2025 by Thomas Breitkreuz