Laden...

[vorerst gelöst] Selbsterzeugter Fenster/Control-style

Erstellt von userid11997 vor 13 Jahren Letzter Beitrag vor 13 Jahren 1.401 Views
U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 13 Jahren
[vorerst gelöst] Selbsterzeugter Fenster/Control-style

Moin,

ich möchte meinen Fenstern und Controls einen selbst definierten Style geben. Dabei würde ich gerne wissen, wie ich ein Fenster transparent mache und dann mit einer halbtransparenten Grafik darauf zeichnen kann.
Vor allem sollte das Ganze noch performe sein, also nicht mehr als 4% der gesammtauslastung schlucken.

Um gleich vorweg ein paar Posts zu vermeiden: Ein Form mit dem transparencyKey unsichtbar zu machen, führt nur dazu, dass die transparente Grafik die verwendete Farbe annimmt!

Ich bin mir auch nicht sicher, ob einen Screenshot zu machen nicht zu viel Performance frisst, wenn das Form öfter versetzt bzw. neugezeichnet wird.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Pria,

das Thema wurde schon einige Male besprochen. Bitte benutze die Forumssuche und poste die besten Treffer hier. Vielen Dank!

herbivore

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 13 Jahren

Naja, das was ich gefunden habe ist alles mehr oder weniger unbefriedigend!
Die sache mit dem CopyFromScreen ist mit einer auslastung von 25 - 50% bei schnellen Bewegungen oder einer entsprechenden Größe zu langsam und das was es noch auf codeprojekt gab "PerPixelAlpha" erfüllt nicht den Zweck, da es zumindest bei mir, keine anderen Controls oder Drawings anzeigt.

49.485 Beiträge seit 2005
vor 13 Jahren

Hallo Pria,

zwei häufig verlinkte Threads sind:

Skins
FormCutter

Ob sie dein Peformance-Problem lösen weiß ich nicht, aber ich kann sagen, dass Windows-Forms und Transparenz eh nicht das ideale Paar sind.

herbivore

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 13 Jahren

Hat jemand eine Ahnung wie das mit dem Skinnen funktioniert?
Hier z.b. SkinCrafter hat auch Styles mit transparentem Fenster. Welche Methoden benötige ich um das nach zu machen?

EDIT: Nach etwas Recherche habe ich Ansätze gefunden, die aber jedesmal ein Form erzeugen, von dem ich erben muss. Die Skinbibliothek aus dem Forum habe ich nicht zum laufen bekommen und bin durch den Code auch nicht durchgestiegen. (Gegebenenfalls bitte helfen)

Gibt es nicht eine Möglichkeit einfach nur einen skin zu initialisieren wie etwa

Skin myskin = new Skin(this);
myskin.ApplySkin();

oder muss ich für die bestmögliche gestalterische Freiheit wirklich immer von einem entsprechenden Skinform erben?

U
userid11997 Themenstarter:in
400 Beiträge seit 2008
vor 13 Jahren

Habe jetzt mal ein paar Ansätze ausprobiert und denke, dass das so gehen sollte.
Das Ergebnis sieht schonmal ganz gut aus. Hat zwar immernoch eine auslastung von bis zu 50% beim verschieben, ruckelt aber nicht mehr, ist also quasi just in time.

Ich muss jetzt nurnoch das ganze so verpacken, dass ich nur noch eine Styleklasse auf mein Form ziehen muss.