Randbegrenzung TChart



  • Hallo,

    ich schreibe gerade ein Pogramm, in dem man bestimmte Figuren(Kreis, Rechteck etc.) zeichnen, verschieben, drehen und so weiter kann.
    Dazu verwende ich die Komponente TChart.
    Es funktioniert auch alles super, bis auf das Problem, dass man über die Zeichenfläche hinausmalen kann.
    Gibt es eine Möglichkeit dies zu verhindern?
    Momentan prüfe ich die einzelnen Max- und Minwerte jeder einzelnen Serie auf den gültigen Bereich, was aber sehr langsam ist.

    mfg



  • Hallo,

    nur mal so aus der Hüfte geschossen: Prüf doch nach dem Zeichnen und schneid' Alles ab was drüber steht...!?!

    MfG

    Edit: Rechtschreibung 🙄



  • Hi,

    vielen Dank für die Antwort.
    Allerdings würde mir das nichts bringen.
    Ich muss gewährleisten, dass ein "Überzeichnen" erst gar nicht zustande kommt.
    Bei einem späteren Abschneiden könnten signifikante Punkte verloren gehen.
    Bsp: Eine einfache Linie wird am rechten Chartrand gezeichnet. Beim späteren Drehen würde ein Teil der Linie aus dem Zeichenbereich verschwinden. Diese nun abzuschneiden wäre die falsche Lösung, generell sollte ein Herausdrehen aus dem gültigen Bereich gar nicht möglich sein.
    Vielleicht finde ich ja am WE eine Möglichkeit.

    mfg



  • Hallo

    Schau dir mal das Beispiel zu TCanvas::ClipRect in der BCB-Hilfe an, da siehst du wie man manuell eine rechteckige Grenze für den Zeichenbereich festgelegt werden kann. Damit solltest du verhindern können, außerhalb eines gewünschten Rahmens zu zeichnen.

    bis bald
    akari



  • Hallo,

    mit Abschneiden meinte ich auch nur optisch. Das geometrische Objekt kann ja im Hintergrund gerne vollständig bleiben.

    weitere Ideen:
    Ist der Zeichenbereich in der Größe variabel? Dann könntest du den Benutzer bei möglichem Überzeichnen fragen, ob er den Zeichenbereich automatisch vergrößert haben möchte. (Machen einige bekannte Anwendungen so oder ähnlich)

    Zu deinem Beispiel: Ich als Benutzer hätte kein Problem damit, dass eine Linie (die ich am Rand eines Zeichenbereiches positioniert habe) bei einer Drehung teilweise aus dem Zeichenbereich verschwindet. Ist doch klar, dass der 2m-Besenstiel nur noch zur Hälfte zu sehen ist, wenn er quer hinter der 1m-Glastür liegt...

    Sind natürlich Alles nur Gedanken zum Thema...

    MfG


Anmelden zum Antworten