Hallo,
ich glaube, es liegt an diesem Teil:
Delphi-Quellcode:
SetMapMode(
DC, MM_ANISOTROPIC);
SetWindowExtEx(
DC, Fpage_xres, Fpage_yres,
nil);
SetViewPortExtEx(
DC, currX, currY,
nil);
SetViewPortOrgEx(
DC, 0, 0,
nil);
SetWindowOrgEx(
DC, 0, 0,
nil);
Damit manipulierst Du das Koordinatensystem im
GDI.
GDI+ verwendet aber ein eigenes Koordinatensystem, das mit dem
GDI nur bedingt zu tun hat. Ich vermute, diese beiden kollidieren irgendwie. Das dürfte auch der Grund für den Kerning-Fehler sein. PrepareKerning geht nämlich davon aus, dass der
DC, von dem die Auflösung geholt wird, aud MM_TEXT steht. Da müsste man also je nach MapMode unterschiedliche Faktoren nehmen.
Gruß
xaromz
PS: Es gibt eine neuer Version, die das Problem mit dem Gradient löst, und ein neues Demoprogramm, bei dem der Zoom endlich besser arbeitet.