Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Gezeichnetes bild in paintbox speichern? (https://www.delphipraxis.net/112693-gezeichnetes-bild-paintbox-speichern.html)

PaddyMu 25. Apr 2008 14:10


Gezeichnetes bild in paintbox speichern?
 
hallo
ich habe mal eine warscheinlich ziemlich einfache frage:
ich möchte mein gezeichnetes über das MainMenu speichern und zwar soll das windows-speicherfeld erscheinen wenn ich auf meinen "speichern"-button klicke. ich weis DAS es geht aber leider nich wie..
hoffe mir kann jemand helfen
lg

[edit=SirThornberry]Titel geändert - Mfg, SirThornberry[/edit]

Klaus01 25. Apr 2008 14:20

Re: Anfänger: Gezeichnetes bild in paintbox speichern?
 
Hallo,

gibt es bei Dir den Reiter Dialogs/Dialoge in der Komponentenpalette?
Dort findest Du den SaveDialog.

Grüße
Klaus

SirThornberry 25. Apr 2008 14:21

Re: Anfänger: Gezeichnetes bild in paintbox speichern?
 
um das "Speichernfeld" zu haben musst du einen TSaveDialog auf dein Form packen und dann die ExecuteMethode aufrufen:
Delphi-Quellcode:
if (SaveDialog1.Execute()) then
begin
  ShowMessage(SaveDialog1.FileName);
end;
Der Dialog kümmert sich nicht um das Speichern sondern nur um die Auswahl eines Dateinamens.

NickelM 25. Apr 2008 14:26

Re: Anfänger: Gezeichnetes bild in paintbox speichern?
 
So ganz einfach, hoffe du verstehst schon den Code

Delphi-Quellcode:
//ein PictureSaveDialog (nur wenn höher als Delphi 5 hast) auf Formular setzen
// dann bei MenuItem bei OnClick folgendes
begin
  If PictureOpenDialog1.Excute then //Excute ist ein function die True zurückgibt, wenn du bei dem Dialog auf OK geklicst hast und einen Dateinamen ausgewählt hast
  begin
    Paintbox1.Canvas.Bitmap.SaveToFile('C:\MeinOrdner\ddd.bmp') //ganz wichtig am ende .bmp, wie es heir ist
  end;
end;
[edit=SirThornberry]Quelltext eingerückt - nächstes mal bitte selbst ordentlich machen - Mfg, SirThornberry[/edit]

SirThornberry 25. Apr 2008 14:29

Re: Anfänger: Gezeichnetes bild in paintbox speichern?
 
Ich glaub du hast einen Schönheitsfehler im Quelltext. Im Kommentar redest du von einem PictureSaveDialog und im Quelltext steht dann etwas von einem PictureOpenDialog

dominikkv 25. Apr 2008 14:35

Re: Anfänger: Gezeichnetes bild in paintbox speichern?
 
Außerdem bringt der SaveDialog nix wenn man den Dateinamen dann nicht verwendet...

Muetze1 25. Apr 2008 14:48

Re: Anfänger: Gezeichnetes bild in paintbox speichern?
 
@NickelM: Seit wann hat denn TCanvas eine Bitmap Eigenschaft?

Medium 25. Apr 2008 15:43

Re: Anfänger: Gezeichnetes bild in paintbox speichern?
 
TCanvas.Bitmap.Canvas.Bitmap.Canvas.Bitmap.Canvas. Bitmap..... wär doch mal lustig :mrgreen:

_frank_ 25. Apr 2008 19:01

Re: Gezeichnetes bild in paintbox speichern?
 
hehe,
da musst du Methoden/funktionen wie TCanvas.CopyRect/Bitblt/scanline etc nutzen. um das Canvas in ein temporäres TBitmap zu kopieren. ohne diesen Umweg ist mir keine möglichkeit bekannt, das bild zu speichern.

HTH Frank

DeddyH 25. Apr 2008 19:26

Re: Gezeichnetes bild in paintbox speichern?
 
Mal schnell eingehackt:
Delphi-Quellcode:
procedure PaintboxToBitmap(const pb: TPaintbox;
                           const bm: TBitmap;
                           pf: TPixelformat = pf24Bit);
begin
  bm.PixelFormat := pf;
  bm.Width := pb.Width;
  bm.Height := pb.Height;
  BitBlt(bm.Canvas.Handle,0,0,bm.Width,bm.Height,pb.Canvas.Handle,0,0,SRCCOPY);
end;

procedure TForm1.Button1Click(Sender: TObject);
var bm: TBitmap;
begin
  bm := TBitmap.Create;
  try
    PaintBoxToBitmap(Paintbox1,bm);
    bm.SaveToFile('C:\test.bmp');
  finally
    bm.Free;
  end;
end;

Fussball-Robby 25. Apr 2008 19:32

Re: Gezeichnetes bild in paintbox speichern?
 
Zitat:

Delphi-Quellcode:
  bm.PixelFormat := pf24Bit;

Möchtest du da nicht lieber den Paramter pf benutzen? :tongue:
Delphi-Quellcode:
  bm.PixelFormat := pf;
[Edit]Mist, zu langsam :mrgreen: [/Edit]

DeddyH 25. Apr 2008 19:36

Re: Gezeichnetes bild in paintbox speichern?
 
*Pssst* selbst gemerkt :zwinker:

PaddyMu 26. Apr 2008 13:42

Re: Gezeichnetes bild in paintbox speichern?
 
ähm ja
danke für die antworten hat aber ganz einfach schon mit dem tipp mit den dialogen und dem code darunter funktioniert xD danke trozdem =)
noch eine frage: wie rufe ich den dialog colordialog auf um zusätliche farben anzuzeigen?
lg

_frank_ 26. Apr 2008 13:46

Re: Gezeichnetes bild in paintbox speichern?
 
den colordialog rufst du genauso wie den SaveDialog auf...mit der execute-methode :)

HTH Frank

PaddyMu 26. Apr 2008 19:12

Re: Gezeichnetes bild in paintbox speichern?
 
Ja aber wenn ich folgendes schreibe:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if (ColorDialog1.Execute()) then
begin
ShowMessage(Colordialog1.CustomColors);
end;
end;
dann sagt er mir inkompatible type: string und TStrings
wie kann ich das den umwandeln? des kann ich nich :oops:

Fussball-Robby 26. Apr 2008 19:15

Re: Gezeichnetes bild in paintbox speichern?
 
Der ColorDialog gibt doch eine Farbe aus(logisch, oder?)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if ColorDialog1.Execute then
  begin
    Form1.Color := ColorDialog1.Color;
  end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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 by Thomas Breitkreuz