Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Problem beim Speichern einer mit Canvas gezeichneten Grafik (https://www.delphipraxis.net/109176-problem-beim-speichern-einer-mit-canvas-gezeichneten-grafik.html)

Fussball-Robby 25. Feb 2008 20:22

Re: Problem beim Speichern einer mit Canvas gezeichneten Gra
 
Nein, da du den SaveDialog zum speichern irgendwie nicht anklicken kannst :-D
Außerdem ruft der Button den SaveDialog im Endeffekt ja sowieso auf

blender 25. Feb 2008 20:26

Re: Problem beim Speichern einer mit Canvas gezeichneten Gra
 
Uups...
Das habe ich vergessen.
Wie sieht der Quelltext denn nun für den Button mit dem SaveDialog aus?
(Ohne euch wäre ich hoffnungslos verloren!!!)

Fussball-Robby 25. Feb 2008 20:30

Re: Problem beim Speichern einer mit Canvas gezeichneten Gra
 
DeddyH hat es doch schon so gut wie fertig gezeigt, du musst das nur noch ins OnClick vom Button packen und fertig:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Bitmap : TBitmap;
begin
  if SaveDialog1.Execute then
    begin
      Bitmap:=TBitmap.Create;
      Try
        Bitmap.Width:=PaintBox1.ClientWidth;
        Bitmap.Height:=PaintBox1.ClientHeight;
        BitBlt(Bitmap.Canvas.Handle,0,0,Bitmap.Width,Bitmap.Height,
               PaintBox1.Canvas.Handle,0,0,SRCCOPY);
        Bitmap.SaveToFile(SaveDialog1.FileName);
      Finally
        Bitmap.Free;
      end;
    end;
end;

//EDIT Ich würde dir dazu noch raten, den Filter vom SaveDialog auf *.bmp zu setzen

blender 25. Feb 2008 20:43

Re: Problem beim Speichern einer mit Canvas gezeichneten Gra
 
Danke.
Ich habe es ausprobiert.
Die datei wird gespeichert.
Trotzdem gibt es noch zwei Probleme:
1.
Die endung wird nicht automatisch hinzugefügt.
Es müsste also so aussehen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  Bitmap : TBitmap;
begin
  if SaveDialog1.Execute then
    begin
      Bitmap:=TBitmap.Create;
      Try
        Bitmap.Width:=PaintBox1.ClientWidth;
        Bitmap.Height:=PaintBox1.ClientHeight;
        BitBlt(Bitmap.Canvas.Handle,0,0,Bitmap.Width,Bitmap.Height,
               PaintBox1.Canvas.Handle,0,0,SRCCOPY);
        Bitmap.SaveToFile(SaveDialog1.FileName + '.bmp');
      Finally
        Bitmap.Free;
      end;
    end;
end;
Tut es der Filter auch allein?

2.
Da das Bild auf den Hintergrund gezeichnet wird, wird, wenn ich minimiere, der Hintergrund wieder Grau.
Das Passiert auch, wenn man ein Fenster darüber zieht.
Also auch beim SaveDialog.
Kann man das irgendwie beheben?

Fussball-Robby 25. Feb 2008 20:45

Re: Problem beim Speichern einer mit Canvas gezeichneten Gra
 
Ich weiß nicht, ob es eine bessere Lösung gibt, aber wenn du statt der Paintbox ein Image nimmst, bleibt das bild auch beim minimieren etc. da

Und zu der Endung, gib einfach beim SaveDialog bei DefaultExt ".bmp" an, dann wird das bmp automatisch hinzugefügt

blender 25. Feb 2008 20:49

Re: Problem beim Speichern einer mit Canvas gezeichneten Gra
 
Wie geht das?
(Ich habe doch gesagt, dass ich ein Anfänger bin!!!)
Ich weiß ja, dass TImage automatisch aktualisiert, aber wie krieg ich da mein Diagramm rein?

Wie ist das Programm eigentlich?(Für einen Anfänger)

STS301 25. Feb 2008 20:51

Re: Problem beim Speichern einer mit Canvas gezeichneten Gra
 
unter Filter kannst du es einstellen, sonst ist das Programm nicht schlecht

Fussball-Robby 25. Feb 2008 20:52

Re: Problem beim Speichern einer mit Canvas gezeichneten Gra
 
auf dem Image kannst du genau so zeichnen wie auf der paintbox (also mit Image1.Canvas...)

blender 25. Feb 2008 20:56

Re: Problem beim Speichern einer mit Canvas gezeichneten Gra
 
Muss ich dann vor aus jedem Canvas ein Image1.canvas machen?

Fussball-Robby 25. Feb 2008 20:59

Re: Problem beim Speichern einer mit Canvas gezeichneten Gra
 
Du hast doch vorher auf der paintbox gezeichnet, also Paintbox1.Canvas, das ersetzt du einfach überall durch Image1.Canvas


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 Uhr.
Seite 2 von 4     12 34      

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 by Thomas Breitkreuz