AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Problem mit überzeichneter Textausgabe bei JvLinkLabel
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit überzeichneter Textausgabe bei JvLinkLabel

Ein Thema von Assertor · begonnen am 20. Okt 2008 · letzter Beitrag vom 20. Okt 2008
Antwort Antwort
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#1

Problem mit überzeichneter Textausgabe bei JvLinkLabel

  Alt 20. Okt 2008, 22:11
Hallo Mitstreiter,

Ich ein kleines Problem mit dem TJvLinkLabel aus den JEDIs: Ich sehe bei den Links immer einen leichten Versatz zur Runtime wenn der Link mal "Hot" oder "Clicked" war.

Ich habe schon die ganze Komponente auseinander genommen. Die Rect-Werte für die Ausgabe stimmen zu 100%. Es scheint also ein Problem zu geben, wenn TextOut mit den selben Koordinaten erneut den gleichen Text jedoch mit anderer Farbe ausgibt.

Das ganze ist in den Screenshots zu sehen.

ClipBoard01.png = Link vor dem MouseOver
ClipBoard02.png = Link während Mouse darüber ist
ClipBoard03.png = Link nach dem MouseOver

Zumindest ClipBoard03.png sollte ja wieder wie ClipBoard01.png aussehen.

Das ganze trifft auch auf die ältere TJvLinkLabel (noch vor der JEDI-Donation) bei Torry zu. Die Ausgabefunktionen scheinen soweit ich sehen kann alle korrekt zu sein.

Weiß da jemand aus dem Stehgreif etwas? Im MSDN hab ich nichts zu Problemen mit TextOut gefunden.

Gruß Assertor
Miniaturansicht angehängter Grafiken
clipboard03_268.png   clipboard02_176.png   clipboard01_188.png  
Frederik
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#2

Re: Problem mit überzeichneter Textausgabe bei JvLinkLabel

  Alt 20. Okt 2008, 22:33
Hallo,

ich denke mal, der Effekt tritt auf, weil die halbtransparenten Kanten des Textes, der durch das Antialiasing entsteht, immer wieder überzeichnet werden. Die einzige Lösung wäre meiner Meinung nach, den Bereich vorher mit der Hintergrundfarbe zu übermalen, bzw bei transparentem oder mehrfarbigem Hintergrund den Bereich mit InvalidateRect zum Neuzeichnen zu zwingen.

Das ist übrigens nicht nur ein JEDI-Problem, z.B. beim Instant-messenger Miranda wird durch eine Größenänderung des Fensters der Text in der Statusleiste überzeichnet. Da warte ich auch schon ewig auf einen Patch.
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#3

Re: Problem mit überzeichneter Textausgabe bei JvLinkLabel

  Alt 20. Okt 2008, 22:56
Hi NamenLozer,

Zitat von NamenLozer:
ich denke mal, der Effekt tritt auf, weil die halbtransparenten Kanten des Textes, der durch das Antialiasing entsteht, immer wieder überzeichnet werden. Die einzige Lösung wäre meiner Meinung nach, den Bereich vorher mit der Hintergrundfarbe zu übermalen, bzw bei transparentem oder mehrfarbigem Hintergrund den Bereich mit InvalidateRect zum Neuzeichnen zu zwingen.
Ja, das mit dem Antialiasing hab ich auch schon vermutet. Das Problem mit dem InvalidateRect ist bei der JvLinkLabel Komponente das alles über Interfaces gelöst ist. Durch die hohe Abstraktion hab ich keinen Zugriff auf Eltern-Elemente der GraphicControl.

Falls Jemandem noch speziell zum JvLinkLabel eine Idee kommt, wäre ich froh.

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Assertor

Registriert seit: 4. Feb 2006
Ort: Hamburg
1.296 Beiträge
 
Turbo C++
 
#4

Re: Problem mit überzeichneter Textausgabe bei JvLinkLabel

  Alt 20. Okt 2008, 23:39
Hi,

Danke nochmal für das Brainstorming, Namenlozer. Ich hab es jetzt gelöst bekommen.

Für alle, die die Lösung irgendwann mal interessiert: TJvCustomLinkLabel.ActivateLinkNodeAtPos und TJvCustomLinkLabel.DeactivateActiveLinkNode anpassen. Inhalt des Parent für Transparenz auf ein übliches Buffer-Bitmap kopieren, dann die Ausgabe darauf und zum Schluß ein BitBlt.

An sich ganz einfach, war wohl irgendwie der Wurm drin

Gruß Assertor
Frederik
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz