Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 05, 2025 04:48

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Di Mai 04, 2010 06:59 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Huhu,

ich habe mir die alphalite Komponente von http://www.alphaskins.com/ installiert.
Eine supitolle Komponente wie ich finde, die das langweilige Delphi Design mit wenig Aufwand enorm aufwertet.
Deswegen würde ich sie auch wirklich gerne für meinen Viewer verwenden.

Leider führt die Verwendung der Komponente zu unerwünschten Effekten im Zusammespiel mit OpenGL:

Es werden:
- meine 3D Daten beim Ziehen der Form über den bildschirm nicht mehr dargestellt, wenn die Bewegungsrichtung nach oben zeigt.
- meine 3D Daten beim Ziehen einer zweiten Form (die zu meiner Application gehört) nicht mehr dargestellt. (allerdings nur wenn die zweite form das panel überlappt, daneben gehts)

in beiden Fällen sehe ich stattdessen das nackte Panel wieder in das ich normalerweise rendere. Sobald ich die Maustaste dann loslasse wird wieder normal gezeichnet.

ich habe die Frage auch im Forum von alpha-controls gestellt, (http://www.alphaskins.com/forum/index.php?showtopic=5248) dachte aber, das hier vielleicht jemand bereits eine Lösung gefunden hat. Oder sich die Sache vielleicht selbst mal anschaut.

Danke schonmal!

Wölfchen


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mai 04, 2010 08:30 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Also ich muss gestehen, dass ich nach 10 Jahren berufstätiger GUI Entwicklung ein Verfechter des langweiligen Standarddesigns bin. Oder anders gesagt sollte sich meiner Meinung eine Anwendung in das System integrieren und nicht daraus hervorstechen. Anwendungen die ihr Design selbst erfinden finde ich meist nur immer sehr gruselig. Für so was gibts Designs mit denen man das komplette Windows anpassen kann. Aber das ist nur meine persönliche Meinung.

Zu deinem Problem kann ich dir keine Lösung sagen. Mit den Komponenten selbst habe ich auch noch nichts gemacht. Allerdings sagt mir ein Bauchgefühl, dass du dagegen wohl nicht viel unternehmen kannst. Das müsste technisch bedingt sein. Und zwar um solche schönen designten Komponenten erzeugen zu können muss man die entweder komplett selber schreiben oder sich übel in die Verarbeitung der Standardkomponenten von Windows einhängen. Und ich denke die machen da letzteres. Wenn ich da sage übel dann meine ich das auch so. Alleine bei einem Button gibt es verschiedene Möglichkeiten an dem der Button zu erst von Windows gezeichnet wird und man den anschließend noch mal übermalen muss. Keine Chance das zu verhindern. Wenn ich das Fenster von der Demoanwendung verschiebe/öffne/schließe ist das bei mir auch nur am rumflackern.

Bei den Fenstern habe ich gesehen, dass die teilweise durchsichtig sind und einen Schatten haben. Dafür gibt es von Windows (XP) eine vorbereitete Technik. Meines Wissens nach ist die aber nicht mit hardwarebeschleunigten 3d Zeichnen kompatibel. Also in deinem Falle OpenGL. Gesetz den Fall die benutzten das dann könnte/müsste dein OpenGL Kontext sogar im Softwaremodus laufen. Also sofern er auf einem solchen designten Form liegt. Kann aber sein, dass du wegen dem Panel Gück hast. Da bin ich mir nicht sicher. Was allerdings fast genau so schlimm ist, ist ein Fenster die diese Technik benutzt über deinen Kontext drüber zu legen. Da diese Technik zum Transparent machen ganz seltsame Dinge tut. Was ich tun würde muss ich wohl nicht sagen. Aber eventuell könnte es etwas bringen, wenn du die "extended borders" deaktivierst. Heißt zu mindest in der Demo so. Wenn nicht sehe ich wenig Chancen.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mai 04, 2010 13:14 
Offline
DGL Member

Registriert: Do Mär 05, 2009 20:17
Beiträge: 284
Wohnort: Kaiserslautern
Es gibt sicher Dinge die für das Standart Design sprechen.
Allerdings ich als hobby Programmierer der ich hier mein kleines Tool bastle will schon das es ein wenig "auffällt" und nicht so altbacken trocken ausschaut.

Soviel zu dem Thema.

Jetzt wieder konkret:

die extended Borders hatte ich bereits ausgeschaltet, das hat einen Großteil der Probleme gelöst. Ich dachte der Rest lässt sich vielleicht irgendwie von OpenGL Seite lösen.

Ich lass es jetzt erstmal so und wenn mir nix bessres einfällt, dann versuch ich das über eine gruselige Krücke zu lösen (Ansatz wäre: Screenshot machen und beim Fenster Drag statt des echten OpenGL eben ein Image vom letzten Screen zeigen)


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Di Mai 04, 2010 15:01 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Wölfchen hat geschrieben:
Allerdings ich als hobby Programmierer der ich hier mein kleines Tool bastle will schon das es ein wenig "auffällt" und nicht so altbacken trocken ausschaut.
Das Eine hat ja nichts mit dem Anderen zu tun. Mich persönlich schrecken solche "auffälligen" Design eher sehr stark ab, weil eben genau im Hobbybereich so was stark verbreitet ist. Aber ehrlich gesagt ist es mir auch vollkommen egal wie du das machst. Es ist dein Projekt und deine Entscheidung. Ich habe nur meine Meinung geäußert.

Wölfchen hat geschrieben:
Ich lass es jetzt erstmal so und wenn mir nix bessres einfällt, dann versuch ich das über eine gruselige Krücke zu lösen (Ansatz wäre: Screenshot machen und beim Fenster Drag statt des echten OpenGL eben ein Image vom letzten Screen zeigen)
Also DAS solltest du nun wirklich nicht machen. "gruselige Krücke" ist da in meinen Augen sogar noch schmeichelhaft formuliert. Da können die Leute eher damit leben, wenn sich das Fenster nicht aktualisiert als son Krampf.

Wölfchen hat geschrieben:
die extended Borders hatte ich bereits ausgeschaltet, das hat einen Großteil der Probleme gelöst. Ich dachte der Rest lässt sich vielleicht irgendwie von OpenGL Seite lösen.
Ich denke nicht, dass es ein Problem mit OpenGL ist. Eventuell könnte es daran liegen wie du zeichnest (was ich aber anhand der vorhanden Infos überhaupt nicht sagen kann). Ich vermute mal, dass du den RC auf einem Panel erstellt hast und dann per Timer oder OnIdle darauf zeichnest. Problem ist da, dass sobald du ein Fenster ziehst, dann werden solche Events glaube ich komplett unterdrückt. Erst wenn du die Maus wieder los lässt kommen die wieder durch. Dadurch, dass du das Panel nur als Zeichenfläche benutzt werden die WM_PAINTs des Panels ignoriert. Die werden normal ausgelöst wenn es neu gezeichnet werden soll. Also wenn du zum Beispiel ein Fenster darüber ziehst. Das funktioniert mit OnIdle/Timer allerdings dennoch, da dauerhaft der eigentlich Inhalt des Panels überschrieben wird. Du müsstest also eine neue Ableitung von TPanel machen und dann entweder auf das WM_PAINT reagieren oder aber die Methode Paint überschrieben und darin dafür sorgen, dass du das Panel aktualisiert wird.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » Einsteiger-Fragen


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 16 Queries | GZIP : On ]