![]() |
Image in den Zwischenspeicher
Hallo alle miteinander!
Frage: Wie kann man ein Bild, welches bei Laufzeit erzeugt wurde, in den Zwischenspeicher ablegen? Bis hier bin ich:
Delphi-Quellcode:
Wenn ich den Befehl jedoch ausführe kommt ein Access Violation Fehler.
clipboard.assign(Image1.picture);
Gruß Hospi |
Re: Image in den Zwischenspeicher
Mit Clipboard.Assign und TBitmap geht es jedenfalls :gruebel: . Probier vielleicht mal Assign(Image1);
|
Re: Image in den Zwischenspeicher
Probier's mal so:
Delphi-Quellcode:
Clipboard.Assign(Image1.Picture.Bitmap);
|
Re: Image in den Zwischenspeicher
Nee ... Beide Versionen funktionieren nicht! :wall: (Habe ich auch schon selber ausprobiert gehabt)
Frage: Macht es eigendlich was aus wenn das Bild durch Canvas gezeichnet wurde? Wie funktioniert das mit dem Screenshot nochmal?? Der müsste doch eigendlich auch das Bild in die Zwischenablage legen können oder? Gruß Hospi |
Re: Image in den Zwischenspeicher
Zitat:
|
Re: Image in den Zwischenspeicher
Zitat:
|
Re: Image in den Zwischenspeicher
Zitat:
|
Re: Image in den Zwischenspeicher
Noch gar keinen, ich hab noch nicht mit Screenshots gearbeitet. (Habe ich gerade erst gefunden, dass es so etwas überhaupt gibt!) :pale:
|
Re: Image in den Zwischenspeicher
Zeichnest du das Diagramm einfach nur auf das Canvas des Images, oder direkt auf das Bitmap im Image. Wenn erstes, dann mach auf jeden Falls letzteres.
Fürs reine Zeichnen ist die PaintBox da, das Canvas des Image sollte dafür nciht missbraucht werden ;) MfG Pr0g |
Re: Image in den Zwischenspeicher
Zitat:
|
Re: Image in den Zwischenspeicher
Zitat:
|
Re: Image in den Zwischenspeicher
Hallo,
was spricht gegen diesen Code?
Delphi-Quellcode:
ClipBrd in Uses nicht vergessen...
procedure TForm1.Button1Click(Sender: TObject);
var MyFormat : Word; AData : THandle; APalette : HPalette; begin Image1.Picture.SaveToClipBoardFormat(MyFormat,AData,APalette); ClipBoard.SetAsHandle(MyFormat,AData); end; |
Re: Image in den Zwischenspeicher
Zitat:
Delphi-Quellcode:
Nun kannst das Bitmap auch mit
procedure TForm1.Button1Click(Sender: TObject);
var fBmp: TBitmap; //wird zum Zeichnen genutzt begin //Instanz anlegen fBmp := TBitmap.Create; try //Breite und Höhe der des Image anpassen fBmp.Width := Image1.Width; fBmp.Height := Image1.Height; //Pixelformat setzen fBmp.PixelFormat := pf32Bit; //hier kommen deine ganzen Zeichenfunktionen fBmp.Canvas.MoveTo(1, 1); fBmp.Canvas.LineTo(100, 100); //... //Bitmap ins Image kopieren Image1.Picture.Bitmap.Assign(fBmp); finally //Instanz wieder freigeben fBmp.Free; end; end;
Delphi-Quellcode:
in die Zwischenablage kopieren.
Clipboard.Assign(Image1.Picture.Bitmap);
|
Re: Image in den Zwischenspeicher
Zitat:
|
Re: Image in den Zwischenspeicher
Zitat:
|
Re: Image in den Zwischenspeicher
Zitat:
Ich habe diese Procedure ausprobiert und es kommt immer noch der Access Violation Fehler. Was muss denn noch zusätzlich eingefügt werden???? Die ClipBrd habe ich in Uses drin und Clipboard als vom Typ TClipboard deklariert (Als Globale Variable). Fehlt da noch was oder könnte es vieleicht an meiner Delphi-Version liegen (Version 6.00)? Wenn ich den Quellcode von Catbytes ausprobiere:
Delphi-Quellcode:
und ClipBoard.SetAsHandle(MyFormat,AData); weg lasse kommt kein Fehler (Das Bild wird natürlich auch nicht in den Zwischenspeicher geladen).
procedure TForm1.Button1Click(Sender: TObject);
var MyFormat : Word; AData : THandle; APalette : HPalette; begin Image1.Picture.SaveToClipBoardFormat(MyFormat,AData,APalette); ClipBoard.SetAsHandle(MyFormat,AData); end; Folge: Entweder stimmt was nicht mit meinem Delphi nicht oder ich habe einfach etwas beim Einbinden/Deklaration vergessen. |
Re: Image in den Zwischenspeicher
Wo genau kommt der Fehler? Wenn das Bild im Image ist kannst du es doch einfach per
Delphi-Quellcode:
in die Zwischenablage packen.
Clipboard.Assign(Image1.Picture.Bitmap);
|
Re: Image in den Zwischenspeicher
Zitat:
Lade Dir mal ![]() Das klappt bei mir einwandfrei... |
Re: Image in den Zwischenspeicher
Super, vielen Dank, es funktioniert! :-D (Beide Varianten)
Mein Problem lag wahrscheinlich bei der Daklaration:
Delphi-Quellcode:
das wars also. ich gedachte, dass ich clipboard noch mal(so wie oben) daklarieren müsste. :dp:
var
Form1: TForm1; clipboard:Tclipboard; implementation {$R *.dfm} Bis denn Sven |
Re: Image in den Zwischenspeicher
Mal als Hinweis für spätere Codes. Deklarier die Variablen nicht gloabl, wie in deinem Beispiel, sondern in dem "private", bzw. "public" Abschnitt der Form.
|
Re: Image in den Zwischenspeicher
Danke für den Hinweis, aber wenn ich doch nur eine Form habe, ist das denn nicht egal ob es im "privat" oder global steht? :gruebel:
|
Re: Image in den Zwischenspeicher
Du wirst keinen direkten Unterschied haben, aber es kommt OOP näher ;)
|
Re: Image in den Zwischenspeicher
Zitat:
Ich denk allerdings auch nicht immer dran ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 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