Re: Oberes Label2 soll Inhalt von unterem Label1 nicht verdecken

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Hallo Karsten,

bestens erklärt und verstanden.

Das ganze muss aber irgendwie doch gehen. Denn es gibt Programme, die es
können.
Was Dritte können, werde ich auch irgendwann können.
Möglicherweise durch andere Programmmierkünste.

Kurz zu meinem Projekt:
Ich plane ein Chartprogramm, mit dem Trendlinien entlang der Kurslinie
gezogen werden können. Diese Trendlinien sollten sich
überschneiden können. Als Trendlinie verwende ich ein transparentes Label
mit einer diagonalen gezeichneten Linie (DrawLine).
Alles funktionier bestens, solange die Trendlinien (Labels) sich nicht
überscheiden.

Naja, vielleicht muss ich die Trendline anders entwerfen.

Vielen Dank für Deine Bemühungen

Volker


"Karsten Sosna" <k.sosna-NO-SPAM-@xxxxxxxxxxx> schrieb im Newsbeitrag
news:O0KRmoVaIHA.5980@xxxxxxxxxxxxxxxxxxxxxxx
danke für die klare Beschreibung.
Dies entspricht meinen bisherigen vergeblichen Versuchen z.B. Überlagern
von
PictureBox, Textbox, Label.

Wie erreiche ich aber trotzdem mein Ziel (z.B. Einsatz von Label als
Klarsichtfolie mit Inhalt)?
Hallo Volker,
mit Steuerelementen in der Form gar nicht. Steuerelmente können gegenüber
anderen Steuerelement nur tranzparent wirken, wenn sie sich in diesem
befinden. Selbst ein "Übermalen" ist nicht möglich, dar jedes Steuerelment
seine eigene Routine zum Zeichnen besitzt.

Deine Beschreibung bezieht sich sicherlich nur auf die
Standard-Eigenschaftseinstellung:
Steuerelement.Backcolor=transparent.
Was verstehst Du unter "Standard-Eigenschaftseinstellung". Es gibt keine
weiteren Einstellungen die dieses Verhalten beeinflussen, abgesehen von
ControlStyles.SupportsTransparntBackColor. Letzters steuert aber nur, ob
überhaupt transparente Farben unterstützt werden.
Vielleicht erläuterst Du mal etwas genauer was Du machen willst,
sicherlich
gibt es eine Lösung. Die besteht dann aber darin, dass man ein Control
entwickelt, welches die gesamte Anzeige erstellt. Aber nochmals, man bspw.
nicht über einen Button zeichnen, da dieser einen eigenen Grafik-Context
besitzt. Angenommen Du hast ein Formular mit einigen Steuerelementen. Nun
zeichnest Du auf dem Formular(auch an den Stellen wo sich Controls
befinden). Nachdem das Formular gezeichnet wurde fordert das Formular
wiederrum alle in der Controlsauflistung befindlichen Steuerelemente auf
sich selber zu zeichnen. Also überzeichnen die Controls den Bereich, wo
auf
dem Formular schon gezeichnet wurde. Diesen Ablauf wiederholt jedes
Control,
d.h. es zeichnet sich selber und fordert dann wiederum alle Controls in
der
seiner Controls-Auflistung auf sich zu zeichnen.
Ablauf: Ein Panel auf dem Formular. Im Panel eine BictureBox, in dieser
ein
Label

Formular wird gezeichnet.
Formular fordert das Panel auf sich zu zeichnen.
Panel wird gezeichnet.
Panel fordert die PictureBox auf sich zu zeichnen.
PictureBox wird gezeichnet.
PictureBox fordert das Label auf sich zu zeichnen.
Label wird gezeichnet.

Soweit würde Das Label tatsächlich die Zeichnung auf dem Formular
übernehmen, wenn das Panel, die PictureBox und das Label
BackColor=Transparent hätten. Es passiert nämlich folgendes.
Das Panel kopiert den Bereich auf dem es positioniert ist vom Parent und
verwendet Ihn als Hintergrund. Die PictureBox macht das mit dem Panel und
das Label mit der PictureBox. Alles in Butter.
Würdest Du nun transparentes Panel über ein transparentes Label legen,
passiert genau das Gleiche:
Das Formular fordert immer das unterste Control als erstes zum Zeichnen
auf,
also erst das Label. Das Label kopiert nun den Bereich des Formulars und
verwendet ihn als Hintergrund. Danach wird das Panel aufgefordert sich zu
Zeichnen, dieses macht genau das Gleiche, es kopiert den Bereich des
Formulars!!! Das ist genau der Punkt. Das was das Label gezeichnet hat
befindet sich nicht!!! auf dem Formular sondern wurde vom Label lediglich
"übermalt". Nun zeichnet sich das Panel und "übermalt" somit das was das
Formular und das Label gezeichnet haben. Sprich die Ausgabe des Labels ist
nicht mehr sichtbar. Auch die des Formulars nicht, hier das das Panel es
lediglich neu gezeichnet und somit erscheint es als wäre das Panel
"durchsichtig". Also erscheinen Controls nur gegenüber Ihrem Parent als
"durchsichtig", sind sie in Wirklichkeit gar nicht, sie zeichnen einfach
nur
das was der Parent gezeichnet hat neu.
Hoffe das war jetzt verständlich.
--
Gruß Scotty




.



Relevant Pages

  • Re: Oberes Label2 soll Inhalt von unterem Label1 nicht verdecken
    ... Wie erreiche ich aber trotzdem mein Ziel (z.B. Einsatz von Label als ... Angenommen Du hast ein Formular mit einigen Steuerelementen. ... Ein Panel auf dem Formular. ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Re: Formular speichern und dann ?
    ... Neues Panel anzeigen, oder auf eine neue Seite ... Einer beinhaltet das Formular, einer das Label ...
    (microsoft.public.de.german.entwickler.dotnet.asp)
  • Re: Formular speichern und dann ?
    ... Neues Panel anzeigen, oder auf eine neue Seite ... Einer beinhaltet das Formular, einer das Label ...
    (microsoft.public.de.german.entwickler.dotnet.asp)
  • Re: Reihenfolge bei paint(Graphics g)
    ... > wenn ich (unter AWT) verschiedene Komponenten und Panele mit Layout-Managern ... > public class Test extends Panel { ... > das Label und wie koennte ich etwas ueber das Label drueber zeichenen? ... Next by Date: ...
    (de.comp.lang.java)
  • Problem Locating Controls Within a Panel With A Vertical Scroll Bar
    ... I have found that locating, i.e. placing, controls within a Panel which has a vertical scroll bar results in eratic locations. ... It seems that so long as the slider is at the top there is no problem, but if the slider is at the bottom when the Controls.Add is done the control does not end up where its Location property specifies. ... Each time you click on the Add button another Label is added. ... Private Sub Form1_LoadHandles MyBase.Load ...
    (microsoft.public.dotnet.languages.vb)