Autor Beitrag
smuu
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 21.03.03 13:41 
Hallo!

Ich habe folgendes Problem... Ich füge ausgehend von einem Picture-open-dialog, mit der add-Funktion das ausgewählte Bild in eine bereits vorhandene Timage-List ein. Wie verhindere ich, dass das Bild, in mehrere Einzelteile aufgeteilt wird und somit 1 Bild zerteilt in 4 Bilder erscheint?

Wenn ich dies mit dem Bildlisteneditor machen würde, dann kommt da mal ne Frage, ob das Bild zerteilt werden soll, da es zu groß ist... gibt es das adäquat auch, wenn ich zur Laufzeit Bilder hinzufügen will? Hab schon mit width und height rumgespielt, aber irgendwie is der Groschen nich gefallen...
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure TFrm_Form1.eigenes_Bild_hinzufuegen(Sender: TObject);
var Bildpfad:string;
     Bild:TBitmap;
begin
 if Picture_Dialog.Execute then
 begin

    Bild:=Tbitmap.Create;

    Bildpfad:=Picture_Dialog.FileName;
    Bild.LoadFromFile(Bildpfad);

    Image_List_Grid.Add(Bild,nil);     // Bild wird zerteilt!
    Strgrd_Bilderauswahl.Refresh;
end;
 Bild.Free;
end;

*danke schonmal*
smuu

Moderiert von user profile iconTino: Absätze entfernt.
Popov
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1655
Erhaltene Danke: 13

WinXP Prof.
Bei Kleinigkeiten D3Pro, bei größeren Sachen D6Pro oder D7
BeitragVerfasst: Fr 21.03.03 14:10 
Es gibt auf jeden Fall eine Funktion mit der man das teilen verhindern kann. In der standard Einstellung haben alle Images eine Größe. Es gint eine Funktion mit der man das Abschalten kann. Dann kann man Bilder mit verschiedenen Größen laden.

Alternativ kann man aber auch Width und Height an das aktuelle Bild anpassen. So passen dann auch größere Bilder rein als nur 16x16.

_________________
Popov
smuu Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Fr 21.03.03 19:13 
Titel: hilfe...
Also mit width und heigth funktioniert das Ganze irgendwie nich, da ich die bereits vorhandenen Bilder der Imageliste mit dem OndrawCell-Ereignis zeichnen lasse. Ändere ich dann für ein Bild die Größe, dann wird es für alle Bilder geändert...

Falls jemand die Funktion zum Abschalten d. Teilung von Bildern weiß, wäre das klasse ? suche schon den ganzen Tag nach ner Lösung u. langsam macht sich Frust breit...:(

MfG
smuu

Moderiert von user profile iconTino: Absätze entfernt.
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Sa 22.03.03 13:36 
Hallo smuu!

Ich verstehe dein Problem nicht ganz, denn warum verkleinerst du das Bild nicht einfach und fügst es dann in die Bilderliste ein?
Verkleinern kannst du durch ändern der Höhe und Breite, dann wird das Bild aber abgeschnitten oder du benutzt die Methode StretchDraw!

Gruß wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Sa 22.03.03 22:04 
Imagelists haben eine konstante Breite und Höhe, wenn dort was geändert wird, gilt es für ALLE Bilder der Liste.
Eine Methode wäre für jede Bildgröße eine separate Liste oder wie mein vorredner bereits sagte, die Hinzuzufügenden Bitmaps via Stretchdraw aufs gewünschte Mass zurechtzimmern.
ODER: eine TObjektList nehmen, als Objekte dann die beliebigen TBitmaps, TICons u.s.w. Hat den Vorteil, dass hier variable Größen erlaubt sind.
Grez
MSCH
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Sa 22.03.03 22:26 
MSCH hat folgendes geschrieben:
Imagelists haben eine konstante Breite und Höhe, wenn dort was geändert wird, gilt es für ALLE Bilder der Liste.
Schon klar, aber er soll die Breite des Bildes verändern, bevor er das Bild hinzufügt oder verstehe ich dich falsch?

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
smuu Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: So 23.03.03 11:03 
jo - genau, ich müsste das Bild schon vorher anpassen, da ansonsten ja die Darstellung nich passt -> wenn das Bild nich den Abmaßen entspricht, dann wird es aufgeteilt...

Wenn ich das ganze mit dem Bildlisteneditor vor Ausführung d. Progs mache, dann kommt ja mal ne Frage, ob man das Bild teilen möchte, da es zu groß is - verneint man dies, so wird das Bild irgendwie automatisch auf die entsprechende Größe angepasst!

Stretchdraw hab ich bereits in ner Prozedur verwendet, die dann per ondrawcell die Bilder von der Imagelist in mein Stringgrid malt - und die wird ja nach der Imagelist-Prozedur aufgerufen... von daher hat stretchdraw keinen Einfluss auf die Imagelist, oder ?

Fragen über Fragen...

*Verzweiflung macht sich breit...* ;)
bin dankbar für jeden Tip!

MfG
smuu

Moderiert von user profile iconTino: Absätze entfernt.
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: So 23.03.03 18:06 
Hallo smuu!

Also ich verstehe dich nicht ganz!
Du lädst Bilder mit dem Pciture-Dialog und hast das Bild danach dann in einer TPicture-Variable.
Danach musst du doch nur noch das Bild verkleinern und fertig. Beispiel:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var
  BitMap: TBitMap;
begin
  BitMap := TBitmap.Create;
  BitMap.Height := 16;
  BitMap.Width := 16;
  Bitmap.Canvas.StretchDraw(Rect(0, 0, 16, 16), Picture.Graphic);
  ImageList.Add(BitMap, nil);
end;
Gruß wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
smuu Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 24.03.03 11:31 
Hallo wulfskin!

Vielen Dank für die Antwort & das Beispiel -
hab das Ganze noch ein bisschen umgeschrieben und jetzt funktionierts!

*vielen Dank*

MfG
smuu