LineTo Zeichenfunktion eingrenzen

Hallo!

Gibt es eine Möglichkeit den Befehl LineTo nur in einem bestimmten
Bereich ausführen zu lassen? Also die Linie nur zB. innerhalb eines
Rechtecks zu zeichnen, und alles was darüber hinausgeht abschneiden?

Grüße
Huddi

Gibt es eine Möglichkeit den Befehl LineTo nur in einem
bestimmten
Bereich ausführen zu lassen? Also die Linie nur zB. innerhalb
eines
Rechtecks zu zeichnen, und alles was darüber hinausgeht
abschneiden?

Klar:

void LineTo()
{
 SetPixel(1,1);
 SetPixel(1,2);
}

Diese Implementierung von LineTo setzt nur zwei Pixel im Rechteck (1,1)-(2,2).

Oder hast du irgendeine bestimmte Bibliothek im Sinn, die diese Funktion auf irgendeine bestimmte Art implementiert??

Grüße,
Sebastian

Hallo

Das geht so:

SelectObject(hdc, hRgn);
SelectClipRgn(hdc, hRgn);

So setzt du einen Clipping-Bereich, dh. nur innerhalt dieses Bereiches kann gezeichnet werden. Alles darüber hinaus bleibt unverändert.
Für eine recheckige Region dann eine der folgenden Funktionen zum Erstellen benutzen:

hRgn = CreateRectRgn(xLeft, yTop, xRight, yBottom);
hRgn = CreateRectRegionIndirect(&rect);

Ich glaube mit dem Aufruf von

DeleteObject(hRgn);

verschwindet die Clipping-Region und du kannst wieder überall hinzeichnen, sicher bin ich mir aber nicht.
Ansonsten einfach eine fenstergroße Clipping-Region selber einsetzen.

MfG IGnow

Danke, das hab ich gesucht :smile:.