Bild auf Bild zeichnen

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...
Antworten
edreier
Beiträge: 6
Registriert: Fr 15. Jan 2010, 18:22

Bild auf Bild zeichnen

Beitrag von edreier »

Hallo,

ich bin ganz neu hier, und wie das so ist habe ich auch gleich eine Frage.

ich versuche ein Bild auf ein vorhandenes Bild zu zeichen. Mit folgenden Code klappt das nicht. Dort wird zwar auf das vorhandene bild gezeichnet, aber eben nicht das angegebene Bild sondern nur ein graues Rechteck.

procedure TForm1.FormCreate(Sender: TObject);
var Bmp1 :TBitmap;
Bmp :TJPEGImage;


begin
Bmp1 := TBitmap.Create;
Bmp := TJPEGImage.Create;


Bmp1.Height:=200;
Bmp1.Width:=200;
Bmp.LoadFromFile('C:\Beispiel1.jpg');

Bmp1.LoadFromFile('C:\Beispiel2.bmp');
Bmp.Canvas.Draw(10,10,Bmp1);

Image1.Picture.Assign(Bmp1);

end;

Ich würde mich freuen, wenn mir jemand sagen könnte, woran das liegt und wie ich es richtig machen könnte.

Vielen Dank!
Eckhard

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Bild auf Bild zeichnen

Beitrag von theo »

Du zeichnest das Falsche.

Wenn du auf Bmp malst:
Bmp.Canvas.Draw(10,10,Bmp1);
musst du auch Bmp zeichnen und nicht Bmp1
Image1.Picture.Assign(Bmp);

Schlauere Variablennamen wären hier sicher bereits eine Hilfe ;-)

edreier
Beiträge: 6
Registriert: Fr 15. Jan 2010, 18:22

Re: Bild auf Bild zeichnen

Beitrag von edreier »

Hallo Theo,

zunächst vielen Dank für Deine schnelle Antwort!

Das verstehe ich jetzt aber nicht.

Ich möchte doch nicht Bmp auf Bmp zeichnen sondern Bmp1 soll oben links auf Bmp gezeichnet werden.Was habe ich da falsch verstanden?

Sorry wegen der Variablennamen, aber das ist nur ein Beispiel, da hbe ich nicht soviel wert drauf gelegt.

Gruß
Eckhard!

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Bild auf Bild zeichnen

Beitrag von theo »

Damit malst du Bmp1 auf Bmp:
Bmp.Canvas.Draw(10,10,Bmp1);
Dann musst du doch auch Bmp ausgeben. Ist doch logisch oder?

edreier
Beiträge: 6
Registriert: Fr 15. Jan 2010, 18:22

Re: Bild auf Bild zeichnen

Beitrag von edreier »

Also ich habe jetzt folgendes eingefügt

Bmp.Canvas.Draw(10,10,Bmp1);

Code: Alles auswählen

Bmp.Canvas.Draw(10,10,Bmp);
Image1.Picture.Assign(Bmp);

Es erscheint weiterhin nur ein graues Rechteck oben links in der Ecke.

Wie müsste der Code oben denn aussehen, damit es wirklich funktioniert?

Gruß
Eckhard!

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Bild auf Bild zeichnen

Beitrag von theo »

edreier hat geschrieben: Wie müsste der Code oben denn aussehen, damit es wirklich funktioniert?
:roll:
Steht doch oben
Bmp.Canvas.Draw(10,10,Bmp1);
Image1.Picture.Assign(Bmp);

edreier
Beiträge: 6
Registriert: Fr 15. Jan 2010, 18:22

Re: Bild auf Bild zeichnen

Beitrag von edreier »

So sieht es jetzt ja im Code aus, aber es erscheint immernich das graue Rechteck.

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
var   Bmp1 :TBitmap;
      Bmp :TJPEGImage;
 
 
begin
Bmp1 := TBitmap.Create;
Bmp := TJPEGImage.Create;
 
 
Bmp1.Height:=200;
Bmp1.Width:=200;
Bmp.LoadFromFile('C:\Beispiel1.jpg');
 
Bmp1.LoadFromFile('F:\Beispiel2.bmp');
Bmp.Canvas.Draw(10,10,Bmp1);
Bmp.Canvas.Draw(10,10,Bmp);
Image1.Picture.Assign(Bmp);
end;

RSE
Beiträge: 462
Registriert: Mi 30. Jul 2008, 13:11
OS, Lazarus, FPC: WinXP SP3 (L 0.9.28.2 FPC 2.2.4)
CPU-Target: 32Bit
Kontaktdaten:

Re: Bild auf Bild zeichnen

Beitrag von RSE »

Was gemeint war, ist wohl eher:

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
var   Bmp1 :TBitmap;
      Bmp :TJPEGImage;
 
 
begin
Bmp1 := TBitmap.Create;
Bmp := TJPEGImage.Create;
 
 
Bmp1.Height:=200;
Bmp1.Width:=200;
Bmp.LoadFromFile('C:\Beispiel1.jpg');
 
Bmp1.LoadFromFile('F:\Beispiel2.bmp');
Bmp.Canvas.Draw(10,10,Bmp1);
Image1.Picture.Assign(Bmp); // hier hattest du anfangs Bmp1 stehen
end;
Seit er seinen neuen Computer hat, löst er alle Probleme, die er vorher nicht hatte!

edreier
Beiträge: 6
Registriert: Fr 15. Jan 2010, 18:22

Re: Bild auf Bild zeichnen

Beitrag von edreier »

Ja, das stimmt, aber das war ein versehen - Entschuldigung!! - , so wie der code jetzt aussieht macht auch nur das war ich zu beginn schon beschrieben habe.

Benutzeravatar
theo
Beiträge: 10871
Registriert: Mo 11. Sep 2006, 19:01

Re: Bild auf Bild zeichnen

Beitrag von theo »

Dann häng hier mal die fraglichen Bilder rein.

Ausserdem solltest du deine Lazarus Version angeben und dein Betriebssystem, auch ob 32 oder 64bit

edreier
Beiträge: 6
Registriert: Fr 15. Jan 2010, 18:22

Re: Bild auf Bild zeichnen

Beitrag von edreier »

Hallo Theo,

Danke für Deine schnelle und fleißige Hilfe!

Es ist ja nun nicht so, das gleich eine fertige Lösung wünsche, wenn ich mal Frage. Auch ist es nicht meine Art die Hände in den Schoß zu legen zun zu warten bis das Problem gelöst ist. Soll heißen ich habe weiter probiert und gesucht. dann ist folgendes herausgekommen und funktioniert:

Nochmals vielen Dank!

Gruß
Eckhard

Code: Alles auswählen

procedure TForm1.FormCreate(Sender: TObject);
var
  Pic: TJPEGImage;
  Bmp: TJPEGImage;
  Bild: TBitmap;
begin
  Pic := TJPEGImage.Create;
  Bild:= TBitmap.Create;
  try
    Bmp := TJPEGImage.Create;
    try
      Bmp.Width := 400;
      Bmp.Height := 400;
 
      Pic.LoadFromFile('c:\Beispiel1.jpg');
      Bmp.Canvas.Draw(0, 0, Pic);
 
      Bild.LoadFromFile('c:\Beispiel2.bmp');
      Bmp.Canvas.Draw(100, 100, Bild);
 
      Image1.Picture.Assign(Bmp);
    finally
      Bmp.Free;
    end;
  finally
    Pic.Free;
  end;
end;

Antworten