Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TImage zur Laufzeit positionieren (https://www.delphipraxis.net/60511-timage-zur-laufzeit-positionieren.html)

bluescreen25 8. Jan 2006 10:37


TImage zur Laufzeit positionieren
 
Hallo,
mein Ziel ist, jpg-Bilder zur Erzeugung der gesamten Grafik meines MP3-Players aus einem Ordner zu laden,sowie die Positionen(ggf weitere Properties) in .Ini aufzuzeigen.Zum Testen habe ich allerdings hier erstmal die jpgs direkt bezogen.

Mein Problem hier ist, das der Button im Code die Position des TImage auf meinem Formular annimmt.
Ich möchte aber nicht nur die Position des jpg innerhalb des TImage angeben können (siehe Code),sondern die Position des Timage selbst, unabhängig davon, wo ich es zur Entwicklungszeit hingesetzt habe.

Ist das ganze hier überhaupt die richtige Art und Weise für mein Anliegen ?

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var hintergrund :tjpegimage;
    button :tjpegimage;
begin

hintergrund:=tjpegimage.Create;
Image1.Width := 800;
Image1.Height := 600;
hintergrund.LoadFromFile(extractfilepath(paramstr(0))+'back.jpg');
Image1.Canvas.Draw(0,0,hintergrund);
hintergrund.Free;

button:=tjpegimage.Create;
button.LoadFromFile(extractfilepath(paramstr(0))+'button.jpg');
Image2.Width := 210;
Image2.Height := 60;
Image2.Canvas.Draw(0,0,button);
button.Free;
end;

procedure TForm1.Image2Click(Sender: TObject);
begin
Form1.Close;
end;

Khabarakh 8. Jan 2006 10:42

Re: TImage zur Laufzeit positionieren
 
Du solltest ein einziges Image mit Align = alClient benutzen und auf dieses alle Jpegs zeichnen. Dann brauchst du nur eine Positionsangabe.

bluescreen25 8. Jan 2006 10:44

Re: TImage zur Laufzeit positionieren
 
Zitat:

Zitat von Khabarakh
Du solltest ein einziges Image mit Align = alClient benutzen und auf dieses alle Jpegs zeichnen. Dann brauchst du nur eine Positionsangabe.

Du meinst jetzt für das Hintergrundbild,OK ! Aber wie kann ich die Positionen denn für einen Button setzen ?

Matze 8. Jan 2006 10:46

Re: TImage zur Laufzeit positionieren
 
Zitat:

Zitat von bluescreen25
Aber wie kann ich die Positionen denn für einen Button setzen ?

Ich verstehe nicht ganz? Mit Left und Top kannst du das TImage doch positionieren. :gruebel:

bluescreen25 8. Jan 2006 10:53

Re: TImage zur Laufzeit positionieren
 
Zitat:

Zitat von Matze
Zitat:

Zitat von bluescreen25
Aber wie kann ich die Positionen denn für einen Button setzen ?

Ich verstehe nicht ganz? Mit Left und Top kannst du das TImage doch positionieren. :gruebel:

:-D Das war es schon, danke. Ich zerbrech mir den Kopf. :wall: Ist das erste Mal, das ich mir die Grafik versuche selbst zu erstellen.

Ist das hier denn die Art und Weise, wie man so Art Skins zusammenstellt?

Aenogym 8. Jan 2006 11:17

Re: TImage zur Laufzeit positionieren
 
Zitat:

Zitat von bluescreen25
Ist das hier denn die Art und Weise, wie man so Art Skins zusammenstellt?

hi bluescreen,

ja so ähnlich mache ich es auch.
für den hintergrund nutze ich ein TImage. für den rest (buttons etc.) nutze ich eine eigene komponente, die von TPaintBox abgeleitet ist (darin sind dann drei bilder gespeichert - für mouseOut, mouseOver und Clicked).
einige dinge werden dann einfach per normaler Paintbox selbst gezeichnet (spektrum visualisierung, "action-display" [eine art multifunktionsbutton])

aeno

Matze 8. Jan 2006 11:18

Re: TImage zur Laufzeit positionieren
 
Zitat:

Zitat von bluescreen25
Ist das hier denn die Art und Weise, wie man so Art Skins zusammenstellt?

Wenn du es mit dem Canvas machen möchtest, kannst du das machen, doch gibt es auch Skinkomponenten wie Almdev, die das etwas professioneller erledigen und meist auch "exotischere" Designs kreieren können.

bluescreen25 8. Jan 2006 11:36

Re: TImage zur Laufzeit positionieren
 
@ Aenogym:
das hört sich nicht schlecht an mit der eigenen Komponente, das OnMouseOver ist nämlich beim TImage nicht enthalten. Würdest du mir deine Komponente überlassen ?

@ Matze:
ja dies Komponente DynamicSkinForm habe ich im Moment eingesetzt,da brauchte ich mich überhaupt nicht im die Grafik kümmern. Mit den vorgefertigten Skins habe ich soweit mal meinen Player bestückt. Auf Dauer muss ich sagen, möchte ich gerne selbst mal einen SkinEditor zusammenstellen und zuvor mein Projekt (ist etwas größer als nur der Player) von Grund auf neu aufbauen, deshalb suche ich gerade nach einer geeigneten Möglichkeit, um nacher nicht wieder alles "hinterher" zu programmieren.

Was ist eigendlich der grobe Unterschied vom Einlesen der Jpegs (siehe Code oben) zu diesem hier?

Delphi-Quellcode:
Image4.Width := 210;
Image4.Height := 60;
Image4.Top := 250;
Image4.left := 10;
Image4.Picture.LoadFromFile(extractfilepath(paramstr(0))+'button.jpg');
[edit=sakura] Zitat anstatt Edit. Original gelöscht, "Editiertes" beibehalten (-QUOTE Tage) Mfg, sakura[/edit]

Matze 8. Jan 2006 11:36

Re: TImage zur Laufzeit positionieren
 
Zitat:

Zitat von bluescreen25
das OnMouseOver ist nämlich beim TImage nicht enthalten.

Irgendwie driften wir vom Ursprungsthema ab, doch dazu kannst du dir mal das Projekt von mir angucken: Tum von Hanoi. Dort habe ich transparante Labels über die Image-Buttons gelegt, damit mir die OnMouse-Events zur Verfügung stehen. Ist zwar keine saubere Lösung, aber eine. :zwinker:

bluescreen25 8. Jan 2006 11:41

Re: TImage zur Laufzeit positionieren
 
Zitat:

Zitat von Matze
Zitat:

Zitat von bluescreen25
das OnMouseOver ist nämlich beim TImage nicht enthalten.

Irgendwie driften wir vom Ursprungsthema ab, doch dazu kannst du dir mal das Projekt von mir angucken: Tum von Hanoi. Dort habe ich transparante Labels über die Image-Buttons gelegt, damit mir die OnMouse-Events zur Verfügung stehen. Ist zwar keine saubere Lösung, aber eine. :zwinker:

dein Projekt habe ich mir schon angesehen.Jetzt erinnere ich mich, dafür hast du eine Grafik "fest" integriert, auf denen ein Label für das onclick oder onmouseover zuständig war bzw eine durchsichtige Grafik überlagert.

Hmm , auch nicht schlecht, nur dafür muss man ja 3 Dinge für eine Sache hinterlegen,wenn ich gerade an das Auslagern der jpgs denke, dann muss ich ja das Label auch immer mitziehen.....oder?
Der User soll ja später mal seinen Skin basteln können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:43 Uhr.
Seite 1 von 2  1 2      

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