Kreise und Linien bzw Canvas unter Buttons zeichnen



  • Hi habe ein kleines Problem mit einer Visualisierung.

    Auf einer Form sollen mehrere Kreise, durch Linien verbunden erscheinen. Die Kreise sollen bei Click auf den jeweiligen Kreis die Farbe ändern.

    Realisiert habe ich das ganze mit TShape für die Kreise und TPaint mit der Canvasmethode für die Linien. Mein Problem ist nur, dass die Linien über den Kreisen liegen, allerdings sollen sie darunter liegen.

    Gibt es eine Möglichkeit diese Problem zu lösen bzw gibt es eine weitere Möglichkeit?

    Besten Dank

    Domenik



  • Hallo
    Na, ich Denke mal, wenn du die Linien zuerst zeichnest und dann die Shapes, dann müssten die Linien doch verdeckt werden...



  • Hallo

    Sinvoll wäre es, auch die Kreise selber in TCanvas zu zeichnen, und die TShapes wegzulassen. Dann must du aber selber die Mausklicks auswerten und den Kreisen zuordnen.

    bis bald
    akari



  • @zfzel: Ja, hatte ich auch bereits überlegt, aber da TShape eine rechteckige Fläche beansprucht und Kreise diese nun nicht ausfüllen, fallen auch linienteile weg, nicht wegfallen sollen

    @akari: Auch schon dran gedacht, allerdings für ZEIT/NUTZEN-Faktor zu viel Arbeit

    Ich denke ich werde ein Bitmap hinterlegn



  • Hallo

    Ja, hatte ich auch bereits überlegt, aber da TShape eine rechteckige Fläche beansprucht und Kreise diese nun nicht ausfüllen, fallen auch linienteile weg, nicht wegfallen sollen

    Habe gerade mal ein TShape Kreis erstellt und eine Ecke des Rechtecks über Schrift (TLabel) auf dem Form positioniert.
    Der Text wird nur vom Kreis selber abgedeckt,nicht vom (unsichtbaren) Rechteck um dem Kreis herum.



  • ja ist richtig, nach dem Erstellen wird der unbenutzte Shapebereich transparent, eine Canvas-Zeichnung, welche sich auf dem Gebiet befindet wird dadurch allerdings gelöscht.

    Ich hab es ausprobiert, glaube mir.



  • Sorry, du hast natürlich recht.



  • kp, ich hab für deine Hilfe zu danken



  • Dann dürfte akaris Methode wohl doch die Richtige sein...
    Nur wie erkennt man ob der Mauspfeil über einer kreisförmigen Fläche ist?



  • Mittels der Pythagoras-Formel (Mittelpunkt + Radius benötigt man):

    int dx = X - MittelpunktX;
    int dy = Y - MittelpunktY;
    if(sqrt(dx*dx + dy*dy) <= Radius))
    {
       // ich bin drin!!!
    }
    

Log in to reply