zoom funktion in einer sdi anwendung
-
Hallo zusammen,
ich habe folgende Problemstellung.
ich Zeichne mir ein Objekt in eine SDI anwendung.
jetzt möchte ich mir die Ansicht vergrößern bzw. verkleinern von dem Objekt.
beispiel :
Grafikprogramme in dem ich mir einen bestimmten bereich vergrößern kann.
kann mir da jemand eine hilfestellung geben ?
mfg
cc
-
*push*
-
Da mußt du schon selber ran:
1.) in einen Offscreen DC - Zeichnen und den dan mittels StretchBlt "Gezzoomed" darstellen
2.) jedes Objekt "manuell" zoomen z.B: -> Kreisradius * m_fZoomfakt b.z.w. jede Koordinate mit dem Zoomfaktor multiplizieren
-
Aha
Ich habe mich schon die ganze Zeit gefragt wie soetwas funktioniert doch nur diesen Beitrag vom 28.08.2003 gefunden.Merci
-
Hallo,
noch eine nachfrage hätte ich auch, wie bekomme ich das DC unsichtbar?
Danke
-
Hallo,
Wie bekomme ich das DC unsichtbar?
Was hast du genau vor? DC unsichtbar machen klingt ein bißchen komisch..
MfG
-
hallo,
ich habe ein Bild aus einer Kamera, das zeige ich momentan mit SetDIBitsToDevice() an. Das Bild ist aber 1200 * 700 Pixel und im Fenster wird nur ein Ausschnitt gezeigt. (selbst wenn man Maximiert, was ich aber nicht möchte, sieht man nicht alles)
Ich möchte nun das Kamerabild verkleinert/gezoomt zeigen.
Dazu habe ich die Funktion StretchBlt() gefunden, aber das kopiert ja aus einem existierenden DC in ein neues.
Also dachte ich mit, ich Gebe das Kamerabild in ein Hilfsfenster und Kopiere es gezoomt raus in das Richtige.
*HDC hDC = ::GetDC(param.getHWND()); // Handle zum eigentlichen Fenster
CWnd Win;
HDC hDCh = GetDC(Win.m_hWnd); // Handle zum Hilfsfensterint nLines = SetDIBitsToDevice(hDCh, ...);
SetStretchBltMode(hDC,BLACKONWHITE );
StretchBlt(hDC, ... );*Aber dabei wird mir auch das Hilfsfenster angezeigt, und das stört.
Ich habe bis heute noch nichts mit DIBs gemacht. Für jeden Tip, der mich der Lösung näher bring, wäre ich dankbar.
Danke und Grüße
-
Hallo,
ich kann dir jetzt leider nicht helfen. Meine Zoomfunktion sieht ein bißchen anders aus. Ich habe in meiner Anwendung die logischen Einheiten des Koordinatensystems geändert. Anstatt .SetMapMode(MM_TEXT) (1 logische Einheit = 1 Pixel) als Mapping Mode, MM_ISOTROPIC (log. Einheit = benutzerdefiniert) gewählt. Mit .SetWindowExt und .SetViewportExt die neue Maße bestimmt. Anschließend ganz normal meine Linien/Figuren in die Bitmap gezeichnet.
Ich habe das Ganze geschrieben, weil's vielleicht auch andere User interessiert.
Vielleicht hilft dir folgender Beitrag weiter:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dngdi/html/msdn_dibs2.aspOder es findet sich jemand, der dieses Problem kennt

MfG