[VC++] Zeichenbefehle? Bessere anstelle von drawLine usw...

Danke erstmal,
lässt sich fehlerfrei kompilieren, ich kann mein Control auch auf die Form ziehen und alle Funktionen laufen... aber in Sachen Transparenz hat sich nicht viel getan...
Die Controls überlappen sich noch immer gegenseitig :(

Hab probiert die Farbe zu ändern (auf Empty, Transparent) aber funkt alles nicht
das Control übernimmt zwar die Farbe der Form als Hintergrund, aber nicht die des darunterliegenden Controls! Außerdem werden Linien aus diesen Controls nicht angezeigt wenn sie drunter liegen...

Vielleicht noch eine Idee? :D
 

Anhänge

  • 25597attachment.jpg
    25597attachment.jpg
    11,9 KB · Aufrufe: 179
Scheint ein Bug in der Klassenbibliothek zu sein. Nach einigem Suchen habe ich eine Lösung gefunden: Die Property "CreateParams" muss überschrieben werden. Habe allerdings nur den C#-Code, du musst mal schauen wie du das mit Managed C++ hinbekommst.
C++:
protected override CreateParams CreateParams
{
    get
    {
        CreateParams cp = base.CreateParams;
        cp.ExStyle |= 0x00000020;
        return cp;
    }
}
Gruß
MCoder
 
Sers!
Tut mir leid, hat etwas länger gedauert, war ziemlich beschäftigt!

Ich habe die Property CreateParams überschrieben wie du gesagt hat! Das hat aber dann nicht so funktioniert wie ich wollte, deshalb habe ich zuätzlich die Methode OnPaintBackground überschrieben und leer gelassen!
Jetzt funktionierts super... naja, nur mit den Labels muss ich mir noch etwas überlegen...

Die benötigten Zeilen sehen in managed C++ so aus:
C++:
protected:
property System::Windows::Forms::CreateParams ^ CreateParams
{
	virtual System::Windows::Forms::CreateParams ^ get() override
	{
		System::Windows::Forms::CreateParams ^cp = System::Windows::Forms::Control::CreateParams;
		cp->ExStyle|=0x00000020; //WS_EX_TRANSPARENT
		return cp;
	}
}

public:
virtual void OnPaintBackground(PaintEventArgs ^args ) override sealed
{
}

Danke nochmal, du bist echt eine Riesen Hilfe :D
mfG

Leitman
 
Hey, tut mir echt leid,
ich bin schon wieder :-(

Jetzt klappt das alles wunderbar, ich kann die einzelnen Controls überlagern, die z-Order setzten, alles kein Problem!
Jedoch haben meine Controls auch integrierte Textfelder die ich bei Bedarf ein/aus schalten, die Position und den Text ändern usw... möchte

Aber seit alle meine Controls transparent sind, ist der Text der Label immer so schirch :(
Was kann ich da machen? Muss ich den LabelBackground irgendwie bestimmt setzen?

Wär toll, wenn du mir noch einmal helfen könntest :)
 
MCoder hat gesagt.:
Ähh, was muss ich mir unter "schirch" vorstellen :confused:

Oh, tut mir leid, hätte mich besser ausdrücken sollem :-(

Also, meine Labels im Designer sind immer doppelt geschrieben und von irgendwelchen anderen Sachen überlagert, wobei, das wär mir egal!
Nur sobald ich mein Programm ausführe, sind anselle von den Labels nur schwarze Flecken!

Ich poste mal ein Pic, damit du weißt was ich meine

Greez
Leitman
 

Anhänge

  • 25628attachment.jpg
    25628attachment.jpg
    9 KB · Aufrufe: 94
Ich vermute mal, das Label erbt die Hintergrundfarbe vom Control (die zwar schwarz, aber vollständig transparent ist). Hast du schon mal versucht, die BackColor-Eigenschaft des Labels explizit zu setzen, am besten zur Laufzeit ?

Gruß
MCoder
 
Hm... zu Laufzeit hab ich die Farbe noch nicht geändert... kann ich ja mal probieren

Aber ich denke nicht, dass das mein Problem lösen wird, denn auf welche Farbe soll ich die BackColor setzten? Sobald ich eine bestimmte Color nehmen, ist es ja nicht mehr transparent, aber das möchte ich schon beibehalten :)

Hab bis jetzt nur im Konstruktor oder im Designer die Farbe geändert!
Aber wie gesagt, transparent / empty / fromARGB 0,0,0,0 bringts nicht, und anderen Farben lassen wieder nichts durchscheinen... :(

Danke erstmal, werd mal probieren was ich zur Laufzeit tun kann :)
Aber erst morgen, geh jetzt nach Hause ;)

thy,
Leitman
 
Du könntest ja auch mal versuchen, für's Label den Style "SupportsTransparentBackColor" zu setzen. Oder ganz auf's Label verzichten und den Text direkt ausgeben (Graphics.DrawString)

Gruß
MCoder
 
Hallo!

Hab jetzt probiert, die Label->BackColor während der Laufzeit zu ändern,
aber das wird noch immer genauso "schirch" (Begifferklärung siehe Posting #16 :D )

hab auch probiert den Style zu ändern:
C++:
this->label1->SetStyle(ControlStyles::SupportsTransparentBackColor, true);
this->UpdateStyles();

Da bekomm ich aber folgenden Fehler:
error C3767: 'System::Windows::Forms::Control::SetStyle': candidate function(s) not accessible

Wie meinst du auf Label verzichten :confused:
Ich möchte, unter jedem meiner Controls eine Bezeichnung stehen haben,
die sich standartmäßig aus dem Namen des Controls ergibt, aber durch den Benutzer veränderbar ist

thx
 
Zurück