Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi löschen eines images (https://www.delphipraxis.net/15486-loeschen-eines-images.html)

Kiaro 29. Jan 2004 16:48


löschen eines images
 
Hi ihr!

Wie kann ich, wenn ich per lineto Linien auf ein das canvas eines image gemalt habe diese wieder weg machen?

Grüße, Kiaro

Gregor00 29. Jan 2004 17:11

Re: löschen eines images
 
hi kiaro

die gleiche Frage wollte ich auch grade stellen, das gleiche problem habe ich nämlich auch. Hab aber auch noch keine lösung gefunden.
ich hab es folgendermaßen versucht:

Delphi-Quellcode:
ImageBild.refresh;
hat aber nicht funktioniert...
vielleicht hat hier jemand eine bessere Idee

cu gregor

Kiaro 29. Jan 2004 17:14

Re: löschen eines images
 
den Versuch hatte ich auch schon *gg*

Stanlay Hanks 29. Jan 2004 17:15

Re: löschen eines images
 
Wenn es ein Hintergrundbild gibt, dann dieses Bild einfach nochmal laden. Alternativ könnte man auch einfach ein Rectangle in einer beliebigen Farbe drüberzeichnen.

Man liest sich, Stanlay :hi:

Gregor00 29. Jan 2004 17:29

Re: löschen eines images
 
ja bin ich auch grad drauf gekommen, hab ich auch schon versucht, aber irgendwie steh ich da noch auf dem schlauch: ich kann zwar ein Rechteck zeichnen aber ich weiß nicht wie ich das mit einer farbe ausfülle. kann mir da noch jemand helfen??

@Kiaro: ich denke diese Möglichkeit mit dem rechteck ist die einfachste lösung

cu geregor

notam 29. Jan 2004 17:36

Re: löschen eines images
 
Viel einfacher geht es mit:

Delphi-Quellcode:
image1.picture:=nil;

MikeS 29. Jan 2004 17:38

Re: löschen eines images
 
@notam

sie wollen nicht das bild löschen, sondern die linien die sie auf das bild gemalt haben! :zwinker:

notam 29. Jan 2004 17:41

Re: löschen eines images
 
Ich dachte, sie haben nur die Linien auf dem Image :oops:

MikeS 29. Jan 2004 17:43

Re: löschen eines images
 
oh jetzt wo du es sagst könnte es auch so verstanden werden!
hätte ich mal weiter denken sollen! tut mir leid! :oops:

notam 29. Jan 2004 17:44

Re: löschen eines images
 
Mal sehen was Kiaro und Gregor später sagen...

Stanlay Hanks 29. Jan 2004 17:50

Re: löschen eines images
 
Zitat:

Zitat von Gregor00
ich kann zwar ein Rechteck zeichnen aber ich weiß nicht wie ich das mit einer farbe ausfülle. kann mir da noch jemand helfen??

Da sollte

Delphi-Quellcode:
Image1.Canvas.Brush.Color := clwhite; //Setzt die Füllfarbe auf weiß
weiterhelfen.

Man liest sich, Stanlay :hi:

Gregor00 29. Jan 2004 17:58

Re: löschen eines images
 
Hi stanlay: ha danke so funktioniert es. Also problem ist gelöst, ich schaff es jetzt das Image zu leeren

@Notam :und MikeS: ursprünglich waren (zumindest bei mir) nur die Linien zu löschen vorgesehen.
Aber
Delphi-Quellcode:
image1.picture:=nil;
hilft mir auch weiter. Werde ich warscheinlich auch noch in mein projekt einbauen...

also ich danke euch allen schon mal, dank euch funzt jeztz alles so wie ich es vorgesehen hab.

cu gregor

Kiaro 29. Jan 2004 18:04

Re: löschen eines images
 
Also bei mir liegt schon ein bild unter den Linien :)
Irgendwie verpennt :wall:

Naja, vielen Dank für eure Hilfe, so wie ich das jetzt verstanden funktioniert dass ja mit dem rechteck...

Grüße, Kiaro

Kiaro 1. Feb 2004 09:08

Re: löschen eines images
 
Hi nochmal!

Ich hab jetzt nochmal ewig rumprobiert, aber wenn er die Linien mit dem Rechtck überzeichnet überzeichnet er alles mit dem Rechteck...

Ich hab schon probiert das Bild vorm dem überzeichnen in eine TBitmap Variable zu speichern und hinterher von da aus wieder in die canvas.picture.bitmap Eigenschaft zu schreiben, aber das macht er auch nicht... :cry:

Kiaro

hboy 1. Feb 2004 10:15

Re: löschen eines images
 
du kannst bilder hin- und herkopieren mit

Delphi-Quellcode:
Bitmap.Canvas.CopyRect(const Dest: TRect; Canvas: TCanvas; const Source: TRect);
oder
Delphi-Quellcode:
BitBlt aus Windows, die eigentlich nur von deinem Canvas gewrappt wird
[edit=Luckie]Delphi-Tags gesetzt. Mfg, Luckie[/edit]

hboy 1. Feb 2004 10:21

Re: löschen eines images
 
achja wenn du nur
var
buffer: TBitmap;

hast und dann sagst buffer := Image1.Picture.Bitmap dann übergibst du nur deinen Zeiger auf das Bild. die Daten werden nicht dupliziert.
dazu musst du erst

Delphi-Quellcode:
  buffer := TBitmap.Create;
  buffer.pixelformat := image1.picture.bitmap.pixelformat;
  buffer.width := image1.picture.bitmap.width;
  buffer.height := image1.picture.bitmap.height;
  buffer.Canvas.CopyRect(bounds(0,0,buffer.width, buffer.height),image1.picture.bitmap.canvas,bounds(0,0,buffer.width, buffer.height)) ;
machen.

[edit=Luckie]Delphi-Tags gestezt. Mfg, Luckie[/edit]

Kiaro 1. Feb 2004 23:09

Re: löschen eines images
 
Hi nochmal!

Ich hab das so jetzt mal probiert, sieht bei mir jetzt folgendermaßen aus:

Delphi-Quellcode:
procedure TForm1.Raster1Click(Sender: TObject);
var pic:TBitmap;
begin
 try
  pic:=TBitmap.Create;
  pic.PixelFormat:=form1.Image1.Picture.Bitmap.PixelFormat;
  pic.Width:=form1.Image1.Picture.Bitmap.Width;
  pic.Height:=form1.Image1.Picture.Bitmap.Height;
  pic.Canvas.CopyRect(bounds(0,0,pic.width,pic.height),form1.image1.picture.bitmap.canvas,bounds(0,0,pic.width,pic.height));
     if raster1.Checked = false then begin
     rasterz;
     raster1.Checked:=true;
     form1.label2.visible:=true;
    end
  else begin
   raster1.checked:=false;
   form1.Label2.Visible:=false;
   form1.Image1.canvas.brush.color:=clTeal;
   form1.Image1.canvas.rectangle(0,0,form1.Image1.width,form1.Image1.Height);
   form1.Image1.Picture.Bitmap:=pic;
  end;
 finally pic.Free; end;
end;
rasterz macht nichts weiter als ein paar Linien auf das canvas zeichen.
Wenn ich jetzt raster.checked machen will (is n Punkt im Mainmenu) dann sagt er mir aber ungültiges Pixelformat, wenn er das Speichern des Bildes tun sollte...

weiß grad echt nich mehr weiter

Vielen Dank im Voraus, Kiaro

[edit=Luckie]Sind in diesem Thread die Delphi-Tags kaput? :roll: Mfg, Luckie[/edit]

hboy 3. Feb 2004 17:10

Re: löschen eines images
 
pixelformat setzen!

Delphi-Quellcode:
 pic:=TBitmap.Create;
  pic.PixelFormat:=form1.Image1.Picture.Bitmap.PixelFormat;
  pic.Width:=form1.Image1.Picture.Bitmap.Width;
  pic.Height:=form1.Image1.Picture.Bitmap.Height;
  pic.Pixelformat := pf24bit;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz