Clipping-Problem...
-
hallo liebe Coder,
ich habe bei einer OnPaint Handler ein retangle angelegt, indem gezeichnet werden soll. Nun möchte ich aber noch im selben aufruf die hälfte der restlichen zeichnungen in einem bestimmten bereich zeichnen lassen, der definitiv kleiner ist als mein jetziger...
hier ein paar erfolgslose ideen bisher:
void CGraph::OnPaint() { if ( !m_nXY || !m_xy ) { CWnd::OnPaint(); return; } CPaintDC dc(this); CRect rcClient ; CRect clipRect(0, 0, 200, 100); dc.SetClip(clipRect); // Funktioniert nicht! GetClientRect(&rcClient);
oder auch hier etwas:
CRect rcClient ; CPoint rect_topleft , rect_bottomright ; // Ecken zwischenspeichern rect_topleft = rcClient.TopLeft(); rect_bottomright = rcClient.BottomRight(); // Zeichenbereich verkleinern ( ecken verändern) rect_topleft.x += 100; rect_topleft.y += 100; rect_bottomright.x -= 100; rect_bottomright.y -= 100; rcClient.TopLeft() = rect_topleft; rcClient.BottomRight() = rect_bottomright; GetClientRect(&rcClient);
-
Ich verstehe nicht was Du willst. Ein Clip-Rect verkleinert nichts. Es begrenzt nur die Ausgabe. Sprich: Es erzeugt einen Bereich in den Du Zeichnen kanst und der Rest wird geclippt (also ignoriert).
-
genau....
mein retangle soll schon so bleiben wie es ist...
habe jetzt eine funktion gefunden, mit der ich einen bestimmten bereich zeichnen lassen kann....
// Regionsbestimmung region.CreateRectRgn ( m_border , m_border , (rcClient.Width() - (m_border)) , (rcClient.Height() - (m_border)) ); // Region Geltend machen dc.SelectClipRgn (®ion);
wenn kann ich das wieder abstellen, ohne die OnPaint-Methode zu verlassen?
vielen dank...
-
EInfach alte Clip-Region hlen, bevor Du die neue setzt und dann die alte wieder setzen. GetClipRgn/SetClipRgn