Ignore:
Timestamp:
Apr 24, 2024, 10:28:34 AM (3 weeks ago)
Author:
chronos
Message:
  • Modified: Optimized high DPI scaling. Use lookup table for scaled values. Draw only terrain textures with precise scaling.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Packages/DpiControls/Dpi.Graphics.pas

    r548 r552  
    44
    55uses
    6   Classes, SysUtils, Graphics, LCLType, GraphType, Types;
     6  Classes, SysUtils, Math, Graphics, LCLType, GraphType, Types;
    77
    88const
     
    347347    ToNative: Double;
    348348    FromNative: Double;
     349    Lookup: array[-10000..10000] of Integer; // Should be sufficient for 8K screens
    349350    property Dpi: Integer read FDpi write SetDpi;
    350351  end;
     
    13221323
    13231324procedure TScreenInfo.SetDpi(AValue: Integer);
     1325var
     1326  I: Integer;
    13241327begin
    13251328  if FDpi = AValue then Exit;
     
    13271330  ToNative := ScreenInfo.Dpi / 96;
    13281331  FromNative := 96 / ScreenInfo.Dpi;
     1332  for I := -10000 to 10000 do
     1333    Lookup[I] := Ceil(I * ToNative);
    13291334end;
    13301335
Note: See TracChangeset for help on using the changeset viewer.