Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Linien zeichnen in TRichEdit mit TShape ??

  Alt 27. Jan 2010, 00:24
Ein TShape, was seines Zeichens ja Nachfahre von TGraphicControl ist, hat keinen eigenen Canvas, sondern zeichnet sich auf den seines Parents. Dies tut es, in dem es sich den DeviceContext des Parents abholt. Was und wie dabei was schief läuft ist schwer zu beurteilen.
Mir fielen zwei mögliche Lösungen ein:
1) Eine eigene Shape- (bzw. Line-) Klasse, die von TWinControl abgeleitet ist, und daher über einen eignen Canvas verfügt.
2) Selbst den DC des RichEdits holen, und ein wenig native GDI betreiben.

Bei Variante 1 ergibt sich evtl. das Problem, dass die Linien immer alles im RichEdit verdecken, also potentiell Buchstaben durchkreuzen. Bei Variante 2 könnte man prüfen, ob man grad wirklich auf einen Pixel in der Hintergrundfarbe zeichnet. Dafür dürfte zweiteres "unschöner" zu implementieren sein, und man müsste genauer wissen was TShape macht, dass das RichEdit selbst nicht mehr klar kommt, und dieses vermeiden. Ich zumindest empfinde native GDI als nicht besonders handlich
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat