Bildlauf mit MM_ISOTROPIC
-
Hallo zusammen,
schreibe gerade an einer SDI - CView Anwendung. Diese soll eine Rechnungsseite
anzeigen. Und zwar bei allen Auflösungen gleich gross. Deshalb verwende ich in
OnDraw -> MM_ISOTROPICDa mir aber die Bildschirmhöhe zum Anzeigen nicht ausreicht, habe ich eine vertikale Bildlaufleiste eingefügt. Das haut aber nicht hin.
Setze in OnDraw den Bildschirm auf 1000 - 1000 Einheiten
CRect rectClient; GetClientRect(rectClient); pDC->SetMapMode(MM_ISOTROPIC); pDC->SetWindowExt(1000,1000); pDC->SetViewportExt(rectClient.right, -rectClient.bottom ); pDC->SetViewportOrg(rectClient.right / 2 , rectClient.bottom / 2 );
Somit habe ich bei allen Auflösungen etwa das gleich grosse "Blatt".
Wenn ich aber die Bildlaufleiste verwende wird natürlich der weggescrollte Bereich nicht wieder hergestellt. Gibts da irgendeine Möglichkeit um das zu beseitigen. Oder muss ich ganz anders an die Sache rangehen.Habe auch schon probiert, die Bildschirmbreite durch 2 zu Teilen und dann mein Blatt zu Zeichnen (nicht MM_ISOTROPIC). Kein Problem mit dem Bildlauf, aber auf verschiedenen Auflösungen sieht das furchtbar aus (gestaucht, gestreckt...).
Wenn ich die ganze Seite mit MM_ISOTROPIC ohne Bildlaufleiste auf eine Seite
quetsche, muss ich die Schrift so stark verkleinern, das diese kaum noch lesbar ist.Danke im voraus für evtl. Hilfe
-
Benutze dafür doch einfach ViewportOrg oder WindowOrg.
Je nachdem ob Du mit den internen oder externen Koordinaten arbeiten willst.Du setzt den Scrollbar auf den gesamten Bereich auf den Du scrollen möchtest (Ext-Fensterhöhe) und setzt dann den Org Wert auf den Wert, den der Scrollbar liefert.
Schau Dir doch mal CScrollWindow an in der MFC.
-
Muss mich noch mal melden, da ich es irgendwie nicht hinbekomme.
Ich möchte also die Anzeige des "Blattes" (Rechteck) auf dem View genau in Originalgrösse (DIN A4). Die Grösse soll sich aber bei anderen Auflösungen nicht ändern, also immer so ca. 20 x 30 cm.
Wenn ich jetzt aber z.B. MM_LOMETRIC einstelle, ist die Grösse des Zeichenrechtecks bei verschiedenen Auflösungen unterschiedlich. Eigentlich funktioniert das mit MM_ISOTROPIC /
MM_ANISOTROPIC ganz gut. Nur das Problem mit der Bildlaufleiste...
Ich möchte, daß die Anzeige in etwa so wie in Word aussieht.Gibt es da irgendwo Beispiele
-
-
Entscheide ANISOTROPIC wäre meine Wahl.
Entscheide, Dich mit was für Maßen Du intern arbeiten möchtest. Dnan berechnest Du über den gewünschten Zoom die externe Große.
Mit DPtoLP und LPtoDP kannst Du entsprechend umrechnen.
Die Scrollbars kannst Du in DP oder LP führen. LP ist ofteinfacher. Die Darstellung wird einfach über die Org-Werte verschoben.
D.h. eine Scrollnachricht ändert einfach den Viewport und Du kanst wieder neu anzeigen. Die Anzeige selbst rechnet immer nur in LP's.