Ich glaube, ich kann das inzwischen auf die Prozedur GetDC zurückführen. Nehmen wir mal die Komponente SynEdit als Beispiel. Ohne Highlighter pinselt die ihren Text pfeilschnell auf den Schirm, weil sie nur einmal einen Devicecontext holt. Sobald ich einen Highlighter hinzufüge, wird je Attribute-Abschnitt im Text (Farbwechsel) mindestens einmal GetDC aufgerufen. Je nachdem, wie der jeweilige Highlighter konstruiert ist, auch noch öfter. Das hat wohl damit zu tun, wie das Prinzip TCanvas in der
VCL realisiert ist. Deshalb wirkt sich das Problem bei manchen Komponenten stärker aus als bei anderen.
Bei Virtual Treeview ist es ganz kurios. Verwendet man den als Baum, ist er pfeilschnell. Als Grid jedoch geht er total in die Knie, weil beim Zeichnen der einzelnen Zellen auch jeweils ein
DC geholt wird. Einer meiner Entwicklungsrechner ist da extrem betroffen. Wenn ich da einen VST habe mit 15 Spalten, wie z.B. in HeidiSQL, und ich maximiere das Fenster sodass es komplett neu gezeichnet werden muss, dann kann man dem Bildaufbau der Zellen regelrecht zuschauen. Wie wenn eine Tapete von links oben diagonal ober den Bildschirm nach rechts unten gerollt würde.
Richtig finster wird es dem Anschein nach bei DevExpress, weil die exzessiv mit den DCs umgehen und dabei sogar die
IDE zur Designtime zusammenknüppeln.
Fakt ist, es betrifft nicht alle Maschinen sondern scheint ab einem bestimmten Patchstand aufzutreten. Außerdem sind Intel-iGPUs deutlich schlechter dran als dedizierte NVidia- und AMD-Grakas oder auch Ryzen-Vega-iGPUs. Da es sich bei GetDC aber um eine
Win32-Funktion handelt, kann man wohl nur sagen: Microsoft hats
mal wieder versemmelt.