AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Paintbox speichern

Ein Thema von Delphieinsteiger · begonnen am 24. Sep 2007 · letzter Beitrag vom 5. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
Delphieinsteiger

Registriert seit: 17. Aug 2007
45 Beiträge
 
#1

Paintbox speichern

  Alt 24. Sep 2007, 18:29
Hi!

Wollte mal Fragen ob es möglich ist, wenn ich auf einen Button klicke, nur die Paintbox die sich in eine Scrollbox auf meiner Form befindet,mitsamt Inhalt (Koordinatensystem) auf meinem PC abzuspeichern.Habe gelesen das ich es mit SaveToFile lösen könnte, aber kann mir nicht so richtig vorstellen wie das geht.Für Ratschläge wäre ich Dankbar!
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Paintbox speichern

  Alt 24. Sep 2007, 19:12
Ich nehme an, dass Du den Inhalt des Canvas der Paintbox als Bild speichern willst?

Das geht relativ einfach. Suche einfach mal hier im Forum nach ScrollboxToCanvas...Damit würde Dir der gesamte Inhalt der Scrollbox in einen Canvas Deiner Wahl übergeben. Wenn Du Dir eine TImage creierst, könntest Du diesem den Canvas zuweisen und anschliessend das TImage als Bild speichern. Habe ich auch schon so gemacht...
Danke
Tom
  Mit Zitat antworten Zitat
Delphieinsteiger

Registriert seit: 17. Aug 2007
45 Beiträge
 
#3

Re: Paintbox speichern

  Alt 25. Sep 2007, 18:13
Danke für die Antwort Torud!!
Jetzt habe ich Dank der Prozedur von Omata die ich hier im Forum gefunden habe, meinen Scrollboxinhalt in einem Canvas gezeichnet.Jetzt weiß ich nur nicht genau wie ich diesen Canvas einen Timage zuweisen kann.Habe schon ein paar Versuche unternommen, aber die waren leider nicht von Erfolg gekrönt.Bin halt noch nicht solange dabei!
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#4

Re: Paintbox speichern

  Alt 25. Sep 2007, 18:33
Hallo,

kopiere den Inhalt vom Canvas Deiner PaintBox auf das Canvas Deines Images mittels
Image.Canvas.CopyRect(Image.Canvas.ClipRect, PaintBox.Canvas, PaintBox.Canvas.ClipRect); Anschließend speicherst Du das Ganze mit
Image.Picture.SaveToFile
  Mit Zitat antworten Zitat
Delphieinsteiger

Registriert seit: 17. Aug 2007
45 Beiträge
 
#5

Re: Paintbox speichern

  Alt 25. Sep 2007, 18:50
Das klappt Super!!
Vielen Dank,damit ist ein weiteres Problem gelöst!
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#6

Re: Paintbox speichern

  Alt 25. Sep 2007, 19:07
Wenn Du am TRect ein bissel schraubst, kannst Du den Quellbereich (PaintBox.Canvas.ClipRect) auch noch eingrenzen sowie den Zielbereich (Image.Canvas.ClipRect) festlegen.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#7

Re: Paintbox speichern

  Alt 25. Sep 2007, 19:15
Anstatt den Canvas der Paintbox zu kopieren, wäre es sicher besser das Bitmap einfach neu zeichen zu lassen.
Dazu sollte man die Zeichenroutinen in einer Methode (im Beispiel InternalPaint) konzentrieren:
Delphi-Quellcode:
procedure TForm1.InternalPaint(Canvas:TCanvas);
begin
  // hier alle Zeichenfunktionen rein
end;
procedure TForm1.Paintbox1Paint(sender:TObject);
begin
   InternalPaint(PaintBox1.Canvas);
end;
Jetzt ist es ein Klacks die graphische Ausgabe auf ein TBitmap zu leiten.
Das ist viel sauberer, als der Vorschlag mit dem Image.
Delphi-Quellcode:
var
  bmp : TBitmap;
begin
  bmp := TBitmap.Create;
  try
    bmp.Width := Paintbox1.Width;
    bmp.Height := Paintbox1.Height;
    InternalPaint(bmp.Canvas);
    bmp.SaveTofile(...);
  finally
    bmp.Free;
  end;
Andreas
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#8

Re: Paintbox speichern

  Alt 25. Sep 2007, 20:27
Hallo Shmia,
Zitat von shmia:
Anstatt den Canvas der Paintbox zu kopieren, wäre es sicher besser das Bitmap einfach neu zeichen zu lassen.
erklärst Du mir bitte, warum das besser ist? Aus meiner Sicht ist es anders, aber nicht unbedingt besser. Kläre mich bitte auf, sollte ich falsch liegen.

Die Unterschiede finde ich ehrlich gesagt nicht so gravierend.
Du zeichnest auf den Canvas einer PaintBox, wenn gespeichert werden soll zusätzlich nochmal das Gleiche auf das Canvas eines Bitmaps.
Ich zeichne auf den Canvas einer PaintBox und kopiere das Ergebnis auf ein Image, sofern gespeichert werden soll. Dabei kann ich zusätzlich die zu kopierenden Bereiche festlegen.

Wo ist der Vorteil Deines Vorgehens?
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Paintbox speichern

  Alt 25. Sep 2007, 20:36
Ich persönlich hätte es ähnlich wie s-off gemacht, allerdings nur mit einem TBitmap statt mit einem TImage, denn wenn man sowieso nichts anzeigen will, halte ich das verwenden einer visuellen Komponenete für unsinnig.
Und ob ich die Sachen jetzt kopiere oder eben neu zeichne... Ich selbst würde, wie gesagt, fürs Kopieren plädieren, allerdings dürften die Unterschiede minimal sein.
Bezüglich der zu kopierenden Bereiche: Ich denke da ließe sich beim Neuzeichnen etwas über Canvas.Cliprect machen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#10

Re: Paintbox speichern

  Alt 25. Sep 2007, 20:42
Ja, dass ein TBitmap in diesem Fall, also ohne Bildschirmausgabe besser geeignet wäre, gebe ich zu.
Habe das TImage aus dem ersten Vorschlag aufgegriffen und dummerweise nicht weiter drüber nachgedacht.

Aber schauen wir mal, was shmia noch zu berichten hat - wenn er diesen Aufruf denn überhaupt sieht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz