Bild auf Bild zeichnen
Bild auf Bild zeichnen
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
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
Re: Bild auf Bild zeichnen
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
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

Re: Bild auf Bild zeichnen
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!
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!
Re: Bild auf Bild zeichnen
Damit malst du Bmp1 auf Bmp:
Bmp.Canvas.Draw(10,10,Bmp1);
Dann musst du doch auch Bmp ausgeben. Ist doch logisch oder?
Bmp.Canvas.Draw(10,10,Bmp1);
Dann musst du doch auch Bmp ausgeben. Ist doch logisch oder?
Re: Bild auf Bild zeichnen
Also ich habe jetzt folgendes eingefügt
Bmp.Canvas.Draw(10,10,Bmp1);
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!
Bmp.Canvas.Draw(10,10,Bmp1);
Code: Alles auswählen
Bmp.Canvas.Draw(10,10,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!
Re: Bild auf Bild zeichnen
edreier hat geschrieben: Wie müsste der Code oben denn aussehen, damit es wirklich funktioniert?

Steht doch oben
Bmp.Canvas.Draw(10,10,Bmp1);
Image1.Picture.Assign(Bmp);
Re: Bild auf Bild zeichnen
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;
-
- 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
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!
Re: Bild auf Bild zeichnen
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.
Re: Bild auf Bild zeichnen
Dann häng hier mal die fraglichen Bilder rein.
Ausserdem solltest du deine Lazarus Version angeben und dein Betriebssystem, auch ob 32 oder 64bit
Ausserdem solltest du deine Lazarus Version angeben und dein Betriebssystem, auch ob 32 oder 64bit
Re: Bild auf Bild zeichnen
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
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;