Announcement

Collapse
No announcement yet.

Zeichnen von Linien über alle vorhandenen Komponenten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeichnen von Linien über alle vorhandenen Komponenten

    Hallo geehrte Mitstreiter,

    hat jemand eine Idee, wie man eine schräge Linie zeichnen kann, die etwa Schalter etc. überdeckt und nicht wie per einfachem Canvas von allen anderen Komponenten im Formular selbst verdeckt wird?

    Fügt man die Canvas-Eigenschaft anderen überdeckenden Komponenten wie TStaticText hinzu, erhält man nicht nur eine überdeckende Linie, sondern ein überdeckendes Rechteck, was auch nicht befriedigend ist....

    Vielen Dank!
    Gruesse Peer Dahl

  • #2
    Hi Peer,

    du koenntest ganz oben eine TImage Komponente drueberlegen - und dann auf der zeichnen.

    CU Chri

    Comment


    • #3
      Hallo Chris!

      Vielen Dank fuer Deine Idee. Habe schon früher mal mit einer TImage-Komponente
      experimentiert und ich glaube es war so, dass dann auch der Hintergrund
      von TImage die anderen Komponenten überdeckte und nicht nur die Stellen
      wo die Linie sein soll.

      Doch beim Stöbern in diesem Forum ist mir eine weitere/zusätzliche
      Möglichkeit aufgefallen, mit der man das TImage (bzw. ich habe mir eine
      Ableitung von TStaticText gemacht) formatieren kann:

      In der Diskussion "Formen mit belibigem Aussehen" beschreibt Christian Wende,
      wie man zu beliebigen Umrissen kommt, z.B. über ein Polygon:

      .....

      Beispiel für einen Stern mit 4 Spitzen

      HRGN Reg;
      TPoint Points[9];

      Points[0] = TPoint(0, 0);
      Points[1] = TPoint(100, 50);
      Points[2] = TPoint(200, 0);
      Points[3] = TPoint(150, 100);
      Points[4] = TPoint(200, 200);
      Points[5] = TPoint(100, 150);
      Points[6] = TPoint(0, 200);
      Points[7] = TPoint(50, 100);
      Points[8] = TPoint(0, 0);

      Reg = CreatePolygonRgn(Points, 8, ALTERNATE);

      SetWindowRgn(Handle, Reg, true);

      .....

      Und damit habe gestern um meine schräge Linie ein schräges Polygon
      gezeichnet, welches die Linie scharf ausschneidet. So liegt die Linie
      nun auf einer Form, die gerade die Pixel-Fläche der Linie besitzt.

      Und damit tut es bisher ganz gut.

      Aber ich probiere nochmal die TImage Komponente ohne Formschneiden aus,
      vielleicht bekomme ich den Hintergrund ja noch irgendwie transparent.

      Vielen Dank nochmals für die schnelle Hilfe.

      Gruss Pee

      Comment


      • #4
        Hallo Chris!

        Habe TImage nochmal probiert und zusätzlich festgestellt, dass das Rechteck,
        welches von TImage aufgespannt wird, unten liegende Komponenten überdeckt,
        und von z.B. Buttons andererseits überdeckt wird.

        Der Vorteil von TStaticText, zu der ich die Canvas-Eigenschaft hinzufügte, ist,
        dass diese alles überdecken kann, auch Buttons.

        Gruss
        Pee

        Comment

        Working...
        X