Announcement

Collapse
No announcement yet.

"Überzeichnen" verhindern?

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

  • "Überzeichnen" verhindern?

    Hallo!

    In einem Abkömmling von TCustomPanel, welches ich als Container für zweit TImages verwende, benötige ich die Canvas-Eigenschaft um etwas zu Illustrationszwecken Imageübergreifend zu zeichnen. Das Problem was sich dabei jedoch stellt ist, dass diese Zeichnungen wieder verschwinden, praktisch überzeichnet werden und nicht statisch sind, sobald das Fenster minimiert / wiederhergestellt wird oder ein anderes Fenster darüber kommt. Wie kann ich das verhindern?

    Grüße,
    Mario

  • #2
    Mach eine PaintBox auf das Panel und zeichne im OnPaint.<br>Uli

    Comment


    • #3
      Hallo!

      Danke für deinen Tip, funktioniert jedoch irgendwie nicht. Wenn ich eine TPaintBox auf das Panel setze und im OnPaint-Event ihm anweise, neu zu zeichnen, wird der Event nicht aufgerufen. Versuche ich, die TPaintBox ÜBER die beiden Images zu legen und darin dann zu zeichnen, klappt das auch nicht, denn das zu gezeichnete ist dann nicht sichtbar, selbst wenn ich versuche, sie mit BringToFront in den Vordergrund zu setzen.

      Wie machen es denn TImage & Konsorten, dass der Canvas erhalten bleibt?!? Muss doch irgendwie gehen ...

      Grüße, Mari

      Comment


      • #4
        <i>Wenn ich eine TPaintBox auf das Panel setze und im OnPaint-Event ihm anweise,
        neu zu zeichnen, wird der Event nicht aufgerufen.</i><br>
        Wie meinst du das - "nicht aufgerufen"?

        <i>Versuche ich, die TPaintBox ÜBER die beiden Images zu legen und darin dann zu zeichnen, klappt das auch nicht,</i><br>
        Ich habe schnell mal folgendes ausprobiert:<ul>
        <li>neues Projekt angelegt
        <li>auf Form1 ein Panel gelegt, darauf wiederum ein Image (mit einem Bitmap) und
        eine PaintBox, die sich überlappen.
        <li>daneben noch 2 Buttons auf Form1 gelegt
        <li>und folgende Eventhandler hinzugefügt:
        <pre>
        <code><font size=3 face="Courier New"><span style="background-color: #FFFFFF"><font color="#000000"><b>procedure</b> TForm1.PaintBox1Paint(Sender: TObject);
        <b>begin
        </b> PaintBox1.Canvas.Pen.Width := <font color="#0000FF">5</font>;
        PaintBox1.Canvas.Pen.Color := clRed;
        PaintBox1.Canvas.MoveTo(<font color="#0000FF">0</font>,<font color="#0000FF">0</font>);
        PaintBox1.Canvas.LineTo(<font color="#0000FF">100</font>, <font color="#0000FF">100</font>);
        <b>end</b>;
        <br>
        <b>procedure</b> TForm1.Button1Click(Sender: TObject);
        <b>begin
        </b> PaintBox1.BringToFront;
        <b>end</b>;
        <br>
        <b>procedure</b> TForm1.Button2Click(Sender: TObject);
        <b>begin
        </b> PaintBox1.SendToBack;
        <b>end</b>;
        </span></font>
        </code></pre>
        </ul>
        Wenn ich nun auf Button1 oder Button2 klicke, ist jenachdem die rote Linie oder das Bitmap
        ganz zu sehen.
        <p>
        HTH, Uli

        Comment

        Working...
        X