AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Imagelist bild laden problem

Ein Thema von rocksoft · begonnen am 13. Jul 2005 · letzter Beitrag vom 19. Jul 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von rocksoft
rocksoft

Registriert seit: 8. Mär 2003
54 Beiträge
 
Delphi XE5 Professional
 
#1

Imagelist bild laden problem

  Alt 13. Jul 2005, 22:03
Hallo,

ich habe wieder mal ein kleine frage, ich möchte gerne meine Imagelist dynamisch laden, was an sich kein problem ist, mein problem ist wenn das Bild mehreren reihen hat siehe Bild 1b.bmp,

bei den Bild 1a.bmp lauft alles so wie es sein sollte. Gibt es dafür eine lossung? oder muss ich das Bild 1b.bmp so zuschneiden das ich daraus zwei Bilder mache und dann einzeln einlese 2a.bmp und 2b.bmp?

gleich noch dazu gibt es ein limit, von images in eine reihe?

Delphi-Quellcode:
procedure TForm1.cxButton2Click(Sender: TObject);
var
  Bmp: TBitmap;
begin
    Bmp := TBitmap.Create;
    try
      Bmp.LoadFromFile('c:\2a.bmp');
      ImageList1.AddMasked(Bmp, clFuchsia);
      Image1.Picture.Assign(bmp); //<- Kontroll
      Bmp.LoadFromFile('c:\2b.bmp');
      Image2.Picture.Assign(bmp); //<- Kontroll
      ImageList1.AddMasked(Bmp, clFuchsia);
    finally
      Bmp.Free;
    end;

end;
end.
Danke
Angehängte Grafiken
Dateityp: bmp 2b_151.bmp (3,1 KB, 33x aufgerufen)
Dateityp: bmp 2a_206.bmp (3,1 KB, 22x aufgerufen)
Dateityp: bmp 1a_758.bmp (6,1 KB, 23x aufgerufen)
Dateityp: bmp 1b_634.bmp (6,1 KB, 30x aufgerufen)
Robert
--
mfg Robert
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#2

Re: Imagelist bild laden problem

  Alt 14. Jul 2005, 11:34
Hallöchen,

also, wenn du die Bilder in zur designtime in die imagelist packst wird das mit zwei reihen wohl nicht gehen (hab ich zumindest bisher so beobachtet, kann mich allerdings auch nicht wirklich daran erinnern das mal ausprobiert zu haben).

an deiner stelle (falls du das nicht eh schon machst) würde ich das große (zwei-reihige) bild zur laufzeit laden und in 8 kleine unterbilder aufteilen (du hast ja die maße).

d. h. du teilst die erste reihe in 4 bilder, die zweite in 4 bilder und diese 8 bilder würde ich in eine imageliste packen (zur laufzeit).

hab ich was falsch verstanden?
  Mit Zitat antworten Zitat
Benutzerbild von rocksoft
rocksoft

Registriert seit: 8. Mär 2003
54 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Imagelist bild laden problem

  Alt 14. Jul 2005, 16:19
Hallo dahead,

Zitat:
wenn du die Bilder in zur designtime in die imagelist packst wird das mit zwei reihen wohl nicht gehen
hier sagst Du gerade was ich nicht hören wollte , schade ich dachte es gibt ein trick.

Zitat:
an deiner stelle (falls du das nicht eh schon machst) würde ich das große (zwei-reihige) bild zur laufzeit laden und in 8 kleine unterbilder aufteilen (du hast ja die maße).
dies wäre eine alternative, ist es aber nicht einfacher 2 Bilder zu laden und muss ich mich nicht um die umrechnung kummern oder ich mach einfach eine lange reihe (<- gibt es ein limit?)


Danke
Robert
--
mfg Robert
  Mit Zitat antworten Zitat
Benutzerbild von AndreasP
AndreasP

Registriert seit: 14. Aug 2003
Ort: Halle
82 Beiträge
 
Delphi 7 Professional
 
#4

Re: Imagelist bild laden problem

  Alt 14. Jul 2005, 16:51
Mahlzeit,

da ich derzeit auch mit dem dynamischen laden von Imagelisten kämpfe kenne ich dein Problem. Theoretisch akzeptiert Delphi/TImageList "mehrzeilige" Bilder, schließlich erstellter es dir solche wenn du auf exportieren gehst. Allerdings funzt das nur wenn Delphi will, erst hate er meine akzeptiert und nach einer kleinen Änderung nicht mehr. Was jetzt deine Bilder betrifft währe es meiner Meinung nach das Beste du hängst die zweite Zeile hinter die erste so das du 8 Bilder in einer reihe hast. So funzt das zumindest bei mir.
Live long and prosper, Andy

Die Diskusion zum AppManager gibt es hier
Immer die aktuelle Version vom AppManger
  Mit Zitat antworten Zitat
Benutzerbild von rocksoft
rocksoft

Registriert seit: 8. Mär 2003
54 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Imagelist bild laden problem

  Alt 14. Jul 2005, 22:10
Hallo,

@AndreasP

ja so mach ich es auch zuzeit, nur ist sehr unpraktisch das ganze und wenn man 89 gly oder mehr, daher glaube ich, es ist noch nicht so schlecht die idee von Dahead, es sind ein paar zeilen code aber dafür musste es dann sauber sein

@Dahead hast du eventuell ein paar zeilen code für uns?

Danke.
Robert
--
mfg Robert
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#6

Re: Imagelist bild laden problem

  Alt 15. Jul 2005, 11:04
Zitat von rocksoft:
@Dahead hast du eventuell ein paar zeilen code für uns?
Danke.
mhh, leider nicht, aber sollte eigentlich nicht sonderlich aufwendig sein, oder?
  Mit Zitat antworten Zitat
Benutzerbild von rocksoft
rocksoft

Registriert seit: 8. Mär 2003
54 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Imagelist bild laden problem

  Alt 17. Jul 2005, 09:47
Hallo Dahead,

nein nicht wirklich hab schon mal etwas was einigermassen geht, leider habe ich da noch ein fehler und möglichherweise mach ich es komplizierter als es wirklick ist.

mit ein Bild 100x100 bzw 4 x 25 x 25 lauft es, aber wenn ich 64x64 benutze a 4 x 16x16 fehlen da einige Bilder.

eventuell kann mir jemand helfen

Delphi-Quellcode:
begin
bitmap := TBitmap.Create;
pic := Timage.Create(self);
bitmap.LoadFromFile('c:\qqq.bmp'); //100x100
h:=imagelist1.Height; // Bild Hohe 25px
y:= bitmap.Width; // Image Breite 100
j:= y div h; // Bilder Y = 4
//c:=1;
For c:=0 to j do
begin
a := rect(0,0,y,h);
b := rect(0,h*c,y,h*(c+1));
pic.Canvas.CopyRect(a,bitmap.canvas,b);
ImageList1.AddMasked(pic.Picture.Bitmap, clFuchsia);
pic.free;
bitmap.free;
end;
end;
Danke.
Robert
--
mfg Robert
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Imagelist bild laden problem

  Alt 17. Jul 2005, 10:06
nutzt du die Imagelist nur im Bilder in die Exe zu integrieren und zu Halten oder hast du Komponenten welche die Imagelist nutzen? Wenn du die Imagelist nur zum Halten der Bilder nutzt könntest du diese entweder per ressource einbinden oder dir eine eigene Komponenten schreiben zum halten der Bilder.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#9

Re: Imagelist bild laden problem

  Alt 17. Jul 2005, 11:34
Hallo,

ich kuck mir deinen code mal an, bin aber gerade erst aufgestanden, kann also noch dauern.

aber was mir bisher aufgefallen ist (kann auch gar nix sein):

du schreibst:

H := Imagelist1.Height; // Bild Hohe 25px

aber es sind noch gar keine bilder in der TImageList, oder? Wieso soll H dann (wahrscheinlich) 16 Pixel sein?
oder versteh ich da was nicht.

nebenbei:
normalerweise muss man der TImageList die Maße (Höhe + Breite) vorher mitteilen, also bevor die Bilder reinkommen. Tut man das danach werden evtl. sämtliche Bilder gelöscht.

aber wie gesagt, ich kieck mal.
  Mit Zitat antworten Zitat
Benutzerbild von dahead
dahead

Registriert seit: 16. Mai 2005
620 Beiträge
 
#10

Re: Imagelist bild laden problem

  Alt 17. Jul 2005, 12:39
@rocksoft:

so, hier:

Delphi-Quellcode:

procedure TForm1.Button2Click(Sender: TObject);
var
  Bmp: TBitmap;
begin

  Bmp := TBitmap.Create;
  Bmp.LoadFromFile(GetCurrentDir + '\open.bmp');

  SplitImage(bmp, 2, 4);

  Bmp.Free;
end;

procedure SplitImage(const aBMP: TBitmap; const Rows, PicsInARow: Integer);
var
  SplitBmp: TBitmap;
  I, F: Integer;
begin

  SplitBMP := TBitmap.Create;
  SplitBMP.Height := (aBMP.Height div Rows);
  SplitBMP.Width := (aBMP.Width div PicsInARow);

  for I := 0 to PicsInARow - 1 do
  for F := 0 to Rows - 1 do
   begin

    // ShowMessage(Format('Left: %d, Top: %d, Right: %d, Bottom: %d', [I * SplitBMP.Width, F * SplitBMP.Height, SplitBMP.Width * (I + 1), SplitBMP.Height * (F + 1)]));

    SplitBMP.Canvas.CopyRect
      (
        Rect
          (
            0,
            0,
            SplitBMP.Width,
            SplitBMP.Height
          ),
        aBMP.Canvas,
        Rect
          (
            I * SplitBMP.Width,
            F * SplitBMP.Height,
            SplitBMP.Width * (I + 1),
            SplitBMP.Height * (F + 1)
          )
      );


    SplitBMP.SaveToFile(GetCurrentDir + '\' + IntToStr(I) + IntToStr(F) + '.bmp');
   end;

  SplitBMP.Free;

end;
da ich kein richtiges testbild hatte, hab ich mir selbst eins gemalt, hänge es mal als anhang hier dran, damit du testen kannst ob es bei dir funktioniert. falls nicht könntest du mir mal eines deiner 100x100 px bilder anhängen.
Angehängte Grafiken
Dateityp: bmp open_455.bmp (2,4 KB, 21x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz