Wie wird ein anderes Koordinatensystem in WPF verwendet? (nur Skalierung)

8

(Lass mich dir etwas Kontext geben) Ich entwerfe gerade eine Anwendung, die basierend auf einigen Daten eine druckbare A4-Seite generieren soll. Natürlich sind die geräteunabhängigen Pixel von WPF (96 Pixel / Inch) keine sehr natürliche Maßeinheit in der Papierwelt. Etwas wie Millimeter wäre angemessener. Also habe ich meinen Rechner rausgeholt und einen Skalierungsfaktor von etwa 3.779 erreicht.

Es stellt sich heraus, dass das einfache Klicken auf alles, was auf der Seite in einem ScaleTransform erscheinen soll, einen unangenehmen Nebeneffekt hat: Schriftgrößen werden (natürlich) auch skaliert. Dies ist jedoch nicht das, was ich beabsichtigt habe. Ich möchte 12pt Arial so rendern, als ob 12pt Arial normal rendern würde.

Gibt es eine andere Möglichkeit, das Koordinatensystem zu ändern, ohne in Erweiterungen usw. zu verzweigen, um jede Koordinate, Länge, Dicke usw. zu konvertieren? - oder - Gibt es eine Möglichkeit, font types direkt zuzuordnen, da es DependencyProperties ist? Über ein benutzerdefiniertes Steuerelement, das den gesamten Papierinhalt umschließt, vielleicht?

    
Christian Klauser 22.01.2009, 15:10
quelle

3 Antworten

17

Für die skizzierten Anforderungen müssen Sie nichts besonderes tun, gehen Sie einfach vor und verwenden Sie Zentimeter als Maßeinheit für die WPF-Elemente selbst (dh ohne jede Transformation) - die Art der WPF-Geräteunabhängigkeit erlaubt es Ihnen zu den folgenden:

%Vor%

Das heißt: Sie erhalten ein A4-Fenster in ' cm ' mit einem zentrierten quadratischen TextBox in ' in ' und einer Schriftart in ' pt ' angegeben. Alle diese werden richtig skaliert durch die Transformation, die Sie gegebenenfalls zusätzlich anwenden können (z. B. über einen Zoom-Schieberegler für den Benutzer-Port), wobei deren relative Größe berücksichtigt wird, unabhängig davon, ob sie mit unterschiedlichen Einheiten angegeben sind / p>

Verfügbare Einheiten sind px (Standard), in , cm und pt , siehe zum Beispiel FrameworkElement.Height für Details zu ihrer Spezifikation.

    
Steffen Opel 17.07.2009, 15:51
quelle
2

Sie können auch Größen in Punkten (FontSize="10pt"), in Zoll (FontSize="10in") oder in Zentimetern (FontSize="10cm") einstellen. Natürlich hängt die tatsächliche Größe von der DPI-Einstellung von Windows und der DPI Ihres Monitors oder Druckers in diesem Fall ab.

    
Lars Truijens 17.07.2009 11:29
quelle
0

Just legen Sie die Schriftgröße fest auf 12 / 3.779 = 3.175 , Nein? Weisen Sie es dem enthaltenen Objekt zu, und es sollte auf alle untergeordneten Elemente herablaufen.

    
CannibalSmith 17.07.2009 11:24
quelle

Tags und Links