JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=ec4a87edbf5eb07109cdc66c1cc22725Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Win32: Geformte Fenster

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 15.03.2004, 20:51    Titel: Win32: Geformte Fenster Antworten mit Zitat

Hallo mal wieder,

Ich weiss ganz genau, dass es eine Funktion gibt, mit der man Fenster einen "runden" Rand geben kann, definiert über Grafikpfade oder so ähnlich. Nur habe ich den Namen der Funktion leider vergessen und eine Suche in der MSDN hat erstmal nichts gebracht.
Ich möchte ein Programm eine dem Windows Mediaplayer ähnliche Oberfläche geben - mit dem Unterschied, dass diese Oberfläche animiert sein soll, also die Form während der Programmlaufzeit veränderbar ist.
Ein bisheriger Ansatz mittels Colorkeys (allerdings in C#) hatte beim "Verkleinern" den unangenehmen Nebeneffekt, dass verkleinerte Bereiche einfach im alten Zustand blieben. Dass sieht natürlich sehr unschön aus.
Ich hatte mal irgendwo ein Beispielprogramm gesehen, dass in die Fenstermitte einfach einen Kreis hineingeschnitten hatte, und das ganze über einen Grafikpfad definiert - nur finde ich dieses Beispiel nicht mehr.

Kann mir jemand helfen?
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 15.03.2004, 20:56    Titel: Antworten mit Zitat

Ich glaub die Befehle waren CreatePolygonRgn,... und SetWindowRgn
_________________
"I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
me
Junior JLI'ler



Anmeldedatum: 10.09.2003
Beiträge: 60

Medaillen: Keine

BeitragVerfasst am: 15.03.2004, 21:02    Titel: Antworten mit Zitat

Also mit der MFC scheint das machbar zu sein.
Zieh dir mal in der MSDN folgende Befehle rein:

CRgn::CreateEllipticRgn(...)
und
SetWindowRgn(...)

Damit könnte es klappen.

<edit>
War Fallen Angel wohl schneller Mad
</edit>
_________________
If something is stupid and it works, it ain't stupid! Very Happy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 15.03.2004, 21:10    Titel: Antworten mit Zitat

War das, was ich gesucht hatte, aber wie so oft, wenn man den Fuinktionsnamen nicht genau kennt, ist es schwer etwas in der MSDN zu finden Wink

Danke
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 16.03.2004, 09:25    Titel: Antworten mit Zitat

Also wenn du ne .NET Application machst, da gibt es eine funktion, die praktisch nen Color key für das fenster setzt. Damit geht das auch prima Smile
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 16.03.2004, 11:47    Titel: Antworten mit Zitat

xardias hat Folgendes geschrieben:
Also wenn du ne .NET Application machst, da gibt es eine funktion, die praktisch nen Color key für das fenster setzt. Damit geht das auch prima Smile

Das konnte ich sogar früher schon mit Visual Basic machen. Cool
Ich weiß jetzt grad nicht wie... Rolling Eyes - Es geht auf jeden Fall irgendwie. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
=]Mid[=]Night[=
Super JLI'ler



Anmeldedatum: 20.11.2002
Beiträge: 380
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 16.03.2004, 12:48    Titel: Antworten mit Zitat

Jo, sowas hab ich mit VB auch schon mal gemacht...
mit CreateEllipticRgn(), CreateRectRgn(), CombineRgn() und SetWindowRgn() ein Fenster in der Form eines Gesichts gemacht ^^
schwachsinnig aber lustig Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 16.03.2004, 21:32    Titel: Antworten mit Zitat

Ich habe es inzwischen geschafft, meine Wünschein Realität umzusetzen.
Zitat:

Also wenn du ne .NET Application machst, da gibt es eine funktion, die praktisch nen Color key für das fenster setzt. Damit geht das auch prima Smile
Der Colorkey ist zwar eine Möglichkeit so etwas unter dotNet-Anwendungen zu erreichen, allerdings funktioniert das mit dem Colorkey nicht 100%ig. z.B. ist es bei 32-Bit-Farbtiefe fast Unmöglich eine vernünftige Lösung zu erreichen, aber mit der Eigenschaft Region der Control-klasse hatte ich genau das gefunden, was ich suchte.
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum