Forum: Object-Pascal / Delphi-Language
by DeddyH,
21. Okt 2011
Das Problem ist doch anscheinend, dass auf ButtonClick auf eine Zeichenfläche gemalt wird. Sobald diese Zeichenfläche aktualisiert wird, sind die Änderungen natürlich verschwunden. Daher kann es nur so funktionieren: im OnPaint etwas in der Art
- zeichne Koordinatensystem
- wenn Graph vorhanden, zeichne Graphen
schreiben und im ButtonClick
- definiere Graphen
- neu zeichnen
Fertig ist die...
Forum: Object-Pascal / Delphi-Language
by DeddyH,
21. Okt 2011
Wird in DrawGrid der Graph gezeichnet? Falls ja, dann verstehe ich Dein Problem nicht.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
21. Okt 2011
Aber den Graphen scheinst Du ja nicht im OnPaint zu zeichnen. Wenn, dann alles an der selben Stelle, sonst macht es ja keinen Sinn.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
21. Okt 2011
Wann zeichnest Du denn? Anscheinend nicht im OnPaint, das genau dafür gedacht ist.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
19. Okt 2011
Wie schon gesagt, Du kannst natürlich auch eine Vektorgrafik verwenden. Beispiel:
type
TfrmMetaFileDemo = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private-Deklarationen }
FMetaFile: TMetaFile;
Forum: Object-Pascal / Delphi-Language
by DeddyH,
19. Okt 2011
Was spricht denn gegen ein komplettes Neuzeichnen? Wenn die Berechnungen nicht zu langwierig sind sollte das ja kein Problem sein, anders habe ich das in meinem Beispiel ja auch nicht gemacht.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
19. Okt 2011
Was genau willst Du denn zoomen? Etwas Selbstgezeichnetes oder eine bestehende Pixelgrafik? Ersteres geht wie gezeigt mit Prozentrechnung oder indem man Vektorgrafik benutzt (TMetafile, TMetaFileCanvas).
Forum: Object-Pascal / Delphi-Language
by DeddyH,
17. Okt 2011
Ich reagiere lediglich auf Änderungen der Größe der PaintBox. Ob das nun durch Ändern der Formulargröße oder per Code mittels TrackBar geschieht, spielt doch keine Rolle.
Forum: Object-Pascal / Delphi-Language
by DeddyH,
17. Okt 2011
Prinzipiell ist das mit ein wenig Prozentrechnung einigermaßen einfach zu realisieren. Beispiel mit einer PaintBox (align = alClient):
procedure TForm1.PaintBox1Paint(Sender: TObject);
const
Prozent = 95;
var
Hoehe, Breite, Links, Oben: integer;
pb: TPaintBox;
begin
pb := Sender as TPaintBox;
pb.Canvas.Pen.Color := clRed;
Forum: Object-Pascal / Delphi-Language
by DeddyH,
17. Okt 2011
Du setzt ja auch nur die Breite neu. Die Höhe fehlt, und nach dem Neusetzen musst Du auch neu zeichnen.