Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Eine Zeichnen-Funktion für 2 TImage Komponenten
Tongamann - So 20.12.09 10:43
Titel: Eine Zeichnen-Funktion für 2 TImage Komponenten
Ich habe ein Formular mit zwei TImage Komponenten. In einer wird eine Art Vorschau, in der anderen wird später ein größeres Bild angezeigt. In beiden möchte ich nun ein identisches Dreieck zeichnen.
Wie kann ich verhindern, dass ich die Zeichnen-Aufrufe nicht doppelt programmieren muss?
Momentan:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure zeichneDreieckInPreviewWindow(); begin with Form1.Image1.Canvas do begin pen.color := ... ... lineTo(..)... end; end;
procedure zeichneDreieckInRealWindow(); begin with Form1.Image2.Canvas do begin pen.color := ... ... lineTo(..)... end; end; |
Ziel:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure zeichneDreieckInPreviewWindow(); with Form1.Image1.Canvas do zeichne();
procedure zeichneDreieckInRealWindow(); with Form1.Image2.Canvas do zeichne();
procedure zeichne(); ... |
PS: Wie kann ich den Code als "Code" wie in anderen Threads auszeichnen?
Moderiert von
Narses: Indem du eckige, statt spitzen Klammern verwendest. :idea: ;)
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt
dummzeuch - So 20.12.09 11:02
Tongamann hat folgendes geschrieben : |
Ich habe ein Formular mit zwei TImage Komponenten. In beiden möchte ich nun ein identisches Dreieck zeichnen.
Wie kann ich verhindern, dass ich die Zeichnen-Aufrufe nicht doppelt programmieren muss?
|
Indem Du es laesst wie es ist? (doppelte Verneinung ...)
| Zitat: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| procedure zeichneDreieckInPreviewWindow(); begin with Form1.Image1.Canvas do begin pen.color := ... ... lineTo(..)... end; end;
procedure zeichneDreieckInRealWindow(); begin with Form1.Image2.Canvas do begin pen.color := ... ... lineTo(..)... end; end; |
Ziel:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure zeichneDreieckInPreviewWindow(); with Form1.Image1.Canvas do zeichne();
procedure zeichneDreieckInRealWindow(); with Form1.Image2.Canvas do zeichne();
procedure zeichne(); ... |
|
Zunaechst einmal verabschiede Dich bitte so schnell wie moeglich vom WITH Statement, das wird frueher oder spaeter zum Alptraum bei der Programmpflege. Die Loesung ist ganz einfach:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure Zeichne(_cnv: TCanvas); begin _cnv.Pen.Color := clBlack; end;
procedure zeichneDreieckInPreviewWindow(); zeichne(Form1.Image1.Canvas);
procedure zeichneDreieckInRealWindow(); zeichne(Form1.Image2.Canvas); |
Moderiert von
Narses: Code- durch Delphi-Tags ersetzt
Tongamann - So 20.12.09 13:13
Wunderbar - genau das habe ich gesucht. 1000 Dank!!!
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!