Zitat:
Ist die selbstgemacht oder irgendwoher kopiert?
Bitte? Was sollen deine Anmachungen andauernd.
Suche dir dafür in Zukunft jemand anderen... und ja es funktioniert auch ohne deine Verschlimmbesserungen.
Das ist doch eine ganz normale Frage?
Sind wir heute wieder besonderes dünnhäutig?
Anbei noch ein Screenshot des Line Timer von der Nexus Quality Suite (
https://www.nexusdb.com/support/inde...etimerfeatures).
Die Funktion habe ich 100 mal aufgerufen und in der linken Spalte siehst du die Zeiten in Millisekunden.
Alles größer 0,5 habe ich mal farblich markiert.
Du könntest also am meisten Zeit sparen, wenn du - insofern die Schrifteinstellungen für alle Einträge im Menü gleich sind - Das Erstellen der FontFamily, der GDIPlus-Font und das Graphics-Objekt nur einmalig machst und dann über deine Strings iterierst und dir entsprechend die Objekte übergibst.
Delphi-Quellcode:
//Pseudocode:
GdipCheck(GdipCreateFontFamilyFromName(PWideChar(UseFont),
nil, Fam));
// PWideChar
if Assigned(Fam)
then
begin
GdipCheck(GdipCreateFont(Fam, UseSize, 0, 2, TempFont));
if Assigned(TempFont)
then
begin
DC := GetDC(GetDesktopWindow);
GdipCheck(GdipCreateStringFormat(0, 0, strFormat));
GdipCheck(GdipCreateFromHDC(
DC, Graphics));
DoFindLongestStringWidth(strFormat, TempFont, Graphics, UseTexts
{hier natürlich dann eine Liste oder Array mit den Strings übergeben}, bW, bH, UseStrFormat);
ReleaseDc(GetDesktopWindow,
DC);
...