![]() |
Paintbox Buffer
Hallo Delphi Praxis,
ich möchte in meinem Programm zwei Paintboxen benutzen. Auf die eine wird gezeichnet, und auf die andere Wenn die erste fertig ist. Mein Problem ist, dass ich die Fehlermeldung: "TPaintbox kann nicht zu TPaintbox zugewiesen werden". Hier der Code im Beispiel:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin Paintbox1 :=TPaintbox.Create(self); Paintbox1.Parent :=Panel1; Paintbox2 :=TPaintbox.Create(Self); Paintbox2.Parent :=Panel; zeichne; end;
Delphi-Quellcode:
Immer wenn er den Inhalt der Paintbox1 auf Paintbox2 per Assign übertragen soll (also bei Pfeiltastenklick) kommt die Fehlermeldung...
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin case Key of VK_DOWN : begin verschieben_nach_unten; //eigentlicher Code unwichtig zeichne; // Paintbox1 wird bezeichnet Paintbox2.Assign(Paintbox1); end; VK_UP : begin verschieben_nach_oben; //eigentlicher Code unwichtig zeichne; // Paintbox1 wird bezeichnet Paintbox2.Assign(Paintbox1); end; end; end; Ich hoffe jemand weiß Hilfe. FG Dunkelbunt |
AW: Paintbox Buffer
Nimm ein Bitmap im Speicher.
|
AW: Paintbox Buffer
Guten Morgen,
versuche mal
Delphi-Quellcode:
Paintbox2.picture.assign(Painbox1.picture);
Sorry. Paintbox.picture gibt es nicht. Grüße Klaus |
AW: Paintbox Buffer
Die Paintbox kennt ihr Bild nicht ... sieh' die PaintBox einfach nur als "Nur-Ausgabe-Gerät" an, also nur als Stift.
Mit 'nem Stift kannst du malen, aber nicht das Bild abfragen. @Klaus, ich glaub du bist beim TImage gelandet, mit deinem Picture :wink: |
AW: Paintbox Buffer
Ich versuche jetzt mal ein Bitmap zu benutzen. Wenn ich nicht zurecht komme meld ich mich wieder ;D
<Edit> Ich habe jetzt folgendes Hinzugefügt:
Delphi-Quellcode:
Bitmap:=TBitmap.Create;
Bitmap.PixelFormat := pf32bit; Bitmap.Width:=Paintbox1.Width; Bitmap.Height:=Paintbox1.Height;
Delphi-Quellcode:
Jetzt kommt die Fehlermeldung: "TBitmap kann nicht zu TPaintbox zugewiesen werden."
procedure speichern;
begin Bitmap.Canvas.CopyRect(Bounds(0,0,bitmap.Width, Bitmap.Height), Paintbox1.Canvas, Schreibflaeche.ClientRect); Bitmap.SaveToFile('Bild.bmp'); Bitmap.Free; end; Was ist falsch? </Edit1> <Edit2> Ich bin mir ziemlich sicher, dass der Fehler in speichern; liegt. </Edit2> |
AW: Paintbox Buffer
|
AW: Paintbox Buffer
Immer wenn das Programm
Delphi-Quellcode:
machen soll kommt die besagte Fehlermeldung: "TBitmap kann nicht zu TPaintbox zugeweisen werden."
Paintbox2.Assign(Bitmap);
Bitmap speichert den Inhalt der Paintbox1. Die Paintbox2 soll diesen Inhalt kopieren. Muss man vielleicht Bitmap noch irgendwie konvertieren, so dass TPaintbox das nutzen kann? |
AW: Paintbox Buffer
Delphi-Quellcode:
BitBlt(PaintBox.Canvas.Handle, 0, 0, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle, 0, 0, SRCCOPY)
|
AW: Paintbox Buffer
Es ist keine gute Idee, das Bild einer Paintbox kopieren zu wollen.
Eine Paintbox ist eine reine Einbahnstrasse: ein virtuelles Modell wird gezeichnet und angezeigt. Ausserdem ist es überhaupt nicht nötig dies zu tun. Man kann das virtuelle Modell ja jederzeit neu zeichnen. Entscheidend dabei ist, dass man der Zeichne-Procedure den Canvas als Parameter übergibt:
Delphi-Quellcode:
Ausserdem, und das die das Wichtigste bei einer Paintbox, darf man nur innerhalb
procedure TForm1.Zeichne(canvas:TCanvas);
begin canvas.FillRect(....); .... end; des Event OnPaint auf die Paintbox zeichnen.
Delphi-Quellcode:
procedure TForm1.Paintbox1OnPaint(Sender:TObject);
begin Zeichne((Sender as TPaintbox).Canvas); end; |
AW: Paintbox Buffer
Ich melde mich nochmal, weil was ich versuche noch nicht erreicht ist.
Ich möchte das Flackern meiner Paintbox unterbinden. Es kommt zustande, wenn schnell umgezeichnet werden muss (bei mir ist es eine Art scrollen, was dies auslöst). Dazu soll erst auf eine 2.Paintbox gezeichnet werden und erst wenn die fertig ist auf die erste, so soll lückenlos kein Flackern entstehen. ich hoffe jetzt weiß jemand eine Lösung. FG Dunkelbunt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:59 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