Entwickler-Ecke

Multimedia / Grafik - Wo ist hier der Fehler?


Anonymous - Fr 01.11.02 15:59
Titel: Wo ist hier der Fehler?
Eigentlich ist das keine Grafikfrage, aber ich frag dennoch mal hier.

Also ich muß irgendwann bei Assign nicht richtig aufgepasst haben. Eigentlich dachte ich, daß das Funktioniert:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  Bmp1, Bmp2: TBitmap;
begin
  Bmp1 := TBitmap.Create;
  Bmp2 := TBitmap.Create;
  try
    Bmp1.LoadFromFile('d:\EinBild.bmp');
    Bmp2.Width  := 200;
    Bmp2.Height := 200;
    Bmp2.Canvas.StretchDraw(Rect(0, 0, Bmp2.Width, Bmp2.Height), Bmp1);
    Bmp1.Assign(Bmp2);
    Form1.Canvas.Draw(0, 0, Bmp1);
  finally Bmp2.Free; Bmp1.Free end;
end;


wichtig ist dieser Part


Quelltext
1:
2:
    Bmp1.Assign(Bmp2);
    Form1.Canvas.Draw(0, 0, Bmp1);


Gezeichnet wird hier eine Bitmap die die Größe 200x200 hat, allerdings nicht gestretcht ist. Es ist ein Ausschnit die großen Grafik.

Mache ich das so


Quelltext
1:
    Form1.Canvas.Draw(0, 0, Bmp2);                    


dann ist die Grafik gestrecht. Der Fehler liegt also in


Quelltext
1:
    Bmp1.Assign(Bmp2);                    


Es werden hier nur die Masse übertragen, aber nicht das Bild.

Eigentlich hab ich bis jetzt immer gedacht, daß Assign solche Kleinigkeiten überträt. Sonderbar ist, daß ich das schon immer so gemacht habe. Jetzt kann ich immer wieder eine neues Projekt anlegen und es geht immer noch nicht. Rechner neu starten bringt auch nichts. Alte Projekte geöffnet und gestartet - keine Probleme. Code angeguckt - ist fast das gleiche wie hier. Kaum Unterschiede.

Hab ich also irgendwann nicht richtig bei Assign aufgepasst? Oder enthällt der Code einen Fehler den ich nicht sehe.

Ich hab den Code irgendwann so abgeändert


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
var
  Bmp1, Bmp2: TBitmap;
begin
  Bmp1 := TBitmap.Create;
  Bmp2 := TBitmap.Create;
  try
    Bmp1.LoadFromFile('d:\joanne017b.bmp');
    Bmp2.Assign(Bmp1);
    Bmp1.Width  := 200;
    Bmp1.Height := 200;
    Bmp1.Canvas.StretchDraw(Rect(0, 0, Bmp1.Width, Bmp1.Height), Bmp2);
    Form1.Canvas.Draw(0, 0, Bmp1);
  finally Bmp2.Free; Bmp1.Free end;
end;


Es funktioniert. Also irgendwie ist mir das zu hoch.


fcg - Fr 01.11.02 16:17

wunderbar :D


Raphael82 - Sa 02.11.02 10:20

Das brauch dir doch gar ned zu hoch sein, beim ersten Code hast du versucht änderungen an an etwas vorzunehmen was so noch nicht zur Verfügung stand. Denk dir, du hättest anstelle von Bitmaps Dateien, dann kannst du dir vorstellen, warum es so ned geht..

MfG, Raphael


Anonymous - Sa 02.11.02 16:52

@fcg

fcg hat folgendes geschrieben:
wunderbar :D


Das freut mich wenn es dich freut.

@Raphael82


Raphael82 hat folgendes geschrieben:
...dann kannst du dir vorstellen, warum es so ned geht..


Wenn ich gut im raten wäre, dann würde ich bei "Wer wird Millionär" mitspielen.

Ich danke euch. Eine weitere Antwort interresiert mich nicht, da ich das Problem längst anders gelöst habe. War sowieso nur interessenshalber.


Raphael82 - So 03.11.02 11:49

Popov hat folgendes geschrieben:

Wenn ich gut im raten wäre, dann würde ich bei "Wer wird Millionär" mitspielen.


Ähm, zwischen nachdenken und der kognitiven Lösung und raten liegt ein grosser Wissens- und Logikunterschied!

Raphael :?