AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge Fastreport 2025.1 Chart wird nur verkleinert dargestellt
Thema durchsuchen
Ansicht
Themen-Optionen

Fastreport 2025.1 Chart wird nur verkleinert dargestellt

Ein Thema von norwegen60 · begonnen am 1. Apr 2025 · letzter Beitrag vom 2. Apr 2025
Antwort Antwort
norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
514 Beiträge
 
Delphi 12 Athens
 
#1

Fastreport 2025.1 Chart wird nur verkleinert dargestellt

  Alt 1. Apr 2025, 09:20
Hallo zusammen

ich bin aktuell dabei einige QuickReports auf FastReport umzustellen. Das Ganze unter Delphi XE
Dabei übertrage ich ein TChart mit
Delphi-Quellcode:
  lPictureView := TFrxPictureView(frpStandalone.FindObject('rpim03Chart'));
  if (lPictureView <> nil) and (FChart <> nil) then
      lPictureView.Picture.Assign(FChart.TeeCreateMetafile(False, Rect(0, 0, Round(lPictureView.Width), Round(lPictureView.Height))));
an den Report.
In meiner Entwicklungsumgebung mit Bidlschirmauflösung 1920 x 1200 wird der Chart im Report korrekt dargestellt
Drucke ich denselben Report auf einem Laptop mit 3840 x 2400, Skalierung 225% aus, ist der Chart stark verkleinert (s.Anhang)
Egal wie ich die Properties AutoSize, KeepAspectRatio und Stretched auch setze, das Problem bleibt

Hat jemand einen Lösungsansatz?

Grüße und Danke
Gerd
Angehängte Grafiken
Dateityp: jpg QkXjd9MwkF.jpg (19,4 KB, 21x aufgerufen)
  Mit Zitat antworten Zitat
hotrs02

Registriert seit: 7. Apr 2022
41 Beiträge
 
#2

AW: Fastreport 2025.1 Chart wird nur verkleinert dargestellt

  Alt 2. Apr 2025, 10:09
Das Problem kommt mir bekannt vor. Wir verwenden eine auf TMetaFile-Instanzen basierende Druckvorschau und hatten diesbezüglich ebenfalls Probleme, dass eine mittels TChart.TeeCreateMetafile erzeugte TMetaFile-Instanz beim Einfügen falsch skaliert wurde, wenn die Bildschirmskalierung nicht auf 100% stand.

Ich habe als Lösung eine Routine erstellt, welche mir in Abhängigkeit der Bildschirmskalierung zwei Faktoren ermittelt, welche ich dann benutze, um das an TeeCreateMetafile übergebene Rechteck anzupassen.

Die Routine selber verwendet dazu einen Thread, welcher mittels SetThreadDpiAwarenessContext zunächst seine DPI Awareness auf per-Monitor V2 (DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2) stellt, um unabhängig von der DPI Awareness des Hauptprogramms zu sein. Anschließend wird mittels GetDpiForMonitor die DPI des Monitors ermittelt. Das ganze ins Verhältnis zu 96 DPI gesetzt ergibt dann die oben genannten Faktoren.

Des weiteren setzen wir den ersten Parameter von TeeCreateMetafile auf True, um eine erweiterte ("enhanced") TMetaFile-Instanz zu erhalten. Ich weiß allerdings nicht, ob dies für das Problem relevant ist.
  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 17:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz