Ursprung beim Zeichnen mit der Klasse CDC verändern?!?!
-
Hallo zusammen!
Kann man den Ursprung (der CDC-Klasse) verändern? Habe einige Klassen, die eine Draw-Funktion mit dem Kopf "Draw(CDC* pDC)" haben. Die Objekte der Klassen möchte ich in der OnDraw-Funktion der CScrollView-Klasse zeichnen, allerdings soll ein Objekt, wenn es z.B. die Koordinaten X:0 Y:0 Width:100 Height:50 hat, nicht im Punkt (0,0) sondern beispielsweise (20,20) dargestellt werden. Da ich eine Zeichenebene mit Linealen habe (die Lineale sind keine selbständigen Fenster, sondern werden per CDC in der OnDraw-Klasse gezeichnet), müsste ich den Ursprung verändern.
Ich habe schon daran gedacht, den Objekten nicht nur das Device Context zu übergeben sondern auch den Ursprung, also in etwa so:
void MYScrollView::OnDraw(CDC* pDC) { Object obj(0,0,100,150,...); obj.Draw(pDC,ursprung.x,ursprung.y); } ... void Object::Draw(CDC* pDC, int x, int y) { pDC->Rectangle(mX+x,mY+y); .... .... }
Würde jedoch gerne wissen, ob es auch anders geht. Wäre nett, wenn mir einer helfen könnte - habe schon gesucht, aber nichts gefunden.
Danke, Gruss NeoSpee
-
Ich bin mit CDC nicht fit, aber schau dir mal in der MSDN die Funktionen an, die Viewport enthalten. SetViewportOrg und so.
Oder war es WindowOrg?Naja, der Abschnitt heißt Mapping Functions.
-
Die SetViewportOrg Funktion scheint was zu bewirken
Hatte mir diese Funktion und die SetWindowOrg bereits angeschaut, leider nicht richtig eingesetzt
Benutze die Klasse CMemDC für Double Buffering und hatte versehentlich den falschen Device Context gewählt
Danke, dass du mich nochmal auf die Funktion gebracht hast!!! Wäre bestimmt nicht auf die Idee gekommen, es nochmal mit der Funktion zu probieren
Bis dann,
NeoSpee