Laden...

Forenbeiträge von nop Ingesamt 177 Beiträge

21.08.2013 - 16:52 Uhr

Hallo Gear,

während eine 3D-Animation läuft kann jede Art von 2D-GUI-Update zu einem kurzen Ruckler führen. Deshalb wird z.B auch der Zoom-Wert nicht kontinuierlich geupdated. Die Tooltip-Probleme aus der 1.1 Version gibt es seit Vista dank "Composite Desktop" nicht mehr. Dafür macht "Aero Glass" den Treibern Probleme (zum Glück auch wieder abgeschafft in Windows 8).

Die Statuszeile ist vor allem für Bildunterschriften reserviert. Ich teste viel mit Bildern aus dem Internet und Pressefotos haben oft mitunter lange Bildunterschriften. Aus dem Kopf fällt mir nur Picasa ein, der Bildunterschriften genügend Platz und Aufmerksamkeit widmet (einfaches/direktes Editieren), obwohl diese ausgesprochen sinnvoll sind solange man das Bild nicht ausdrucken will.

Hier geht es auch weniger um Thumbnails, als um eine (Vollbild-)Ansicht wo möglichst viele Bilder, möglichst übersichtlich auf dem Bildschirm zu sehen sind. Vergleichbar mit dem hier:
>

Edit: Die Bilder App für Windows 8 macht auch sowas.

Wenn es schon eine Anwendung gibt, die das gut hinbekommt, gibt es keinen Grund, etwas Ähnliches noch mal zu implementieren. Es gibt übrigens noch ein paar andere Anwendungen, die kreativ/spielerisch mit der "Thumbnail-Darstellung" umgehen. Ausserdem will ModernView ein Bildbetrachter sein, der die Bilder (und Bedienung) in den Vordergrund stellt. Thumbnails/Zusatzinformationen sollten nicht zuviel Platz wegnehmen (bzw. nur bei Bedarf) und auch nicht dauerhaft transparent über dem Bild liegen.

Jens

20.08.2013 - 19:30 Uhr

mabo hat mir per PM die Ursache für den Crash mit Intel-Grafik im 64-Bit Mode mitgeteilt.

Name des fehlerhaften Moduls: mscorwks.dll, Version: 2.0.50727.5472 Google spuckt dazu jede Menge spekulative Crash-Berichte aus, einschließlich eines nicht funktionierenden MS-Bugfix-Threads, der bis ins Jahr 2007 zurückreicht. Was Greifbares konnte ich nicht finden.

Wer also Intel-Grafik besitzt, sollte besser die erzwungene 32-Bit Version verwenden. Beide ModernView-Versionen sind identisch (kompiliert für alle Platformen), bei der 32-Bit Version ist lediglich das 32Bit-Execution-Flag nachträglich gesetzt.

Jens

20.08.2013 - 17:19 Uhr

Hallo telfa,

vielleicht kommen die Tooltips wieder rein. Werden dann aber in jedem Fall abschaltbar sein, weil zwischenzeitliches 2D-GUI-Zeichnen leider einen nervigen, kleinen 3D-Ruckler nach sich ziehen kann.

Mit Hardwarebeschleunigung (WPF, Direct3D oder OpenGL) schafft man sich zumindest schon mal die Basis, daß alles schnell und flüssig dargestellt wird. Mit GDI+ wird man das nie erreichen können. Nicht-lineare Interpolation macht das Ganze dann extraweich, schafft aber auch jede Menge Probleme, die ich auch noch nicht sauber gelöst habe.

Edit: Sehe gerade, daß bei Gear die Icon-Leiste und Thumbnails erscheinen. Vielen Dank. Werde dann wohl den ATI-spezifischen Text in der Konfiguration etwas abändern.

Edit 2: Eine Windows-Infobox mit vollständigen Info zum jeweiligen Bild gibt es, wenn man im Metadaten-Panel doppel-klickt (oder Taste I).

Jens

20.08.2013 - 15:30 Uhr

Hallo Gear,

Tooltips gibt es in der neuen Version gar nicht mehr. Wenn nicht eh selbsterklärend, dann einfach draufklicken und gucken was passiert. Nach 2 Minuten bräuchte man sie eh nie wieder.

Die Idee mit der platzsparenden Thumbnail-Anordnung ist eigentlich gut. Den Thumbnail-Code habe ich allerdings nicht selbst geschrieben (ziemlich umfangreich und tricky, http://code.google.com/p/imagelistview ) und habe auch so schon genug damit zu kämpfen, das Ding anständig zu verwenden. (Aber vielleicht schlage ich das mal dem Autor vor.)

Jens

Edit: Tauchen bei dir im Vollbild die Icon-Leiste und Thumbnails auf?

20.08.2013 - 14:01 Uhr

Hi mabo,

genau das hatte ich vor knapp 2 Jahren auf einem fremden 64-Bit Rechner auch festgestellt, der sowohl Nvidia als auch Intel-Grafik hatte. Wenn man Intel-Grafik aktivierte, stürzt nur die 64-Bit Version ab, wenn man Nvidia aktiviert, läuft es. Mit Nvidia und ATI gibt es übrigens in keiner Version Abstürze. Ich vermute daher, dass Intel dafür verantwortlich ist, konnte das Problem aber nicht weiter untersuchen.

Ich weiss, daß ich viel verlange, aber kannst du feststellen, wer den Fehler versursacht hat (oder wo er auftritt)? Die System-Ereignisanzeige z.B. liefert da eindeutigere Hinweise. Wenn z.B. der Fehler in der Intel-OpenGL-DLL auftritt, stürzt ModernView ab, obwohl es gar nicht dafür verantwortlich war.

Jens

20.08.2013 - 12:03 Uhr

Hi Gear,

liefert Trendmicro auch ein aussagekrätigen Grund für die Sperrung?

Meine Seite ist so ziemlich das Einfachste, was man im Internet finden kann: HTLM5 + CSS, ein Screenshot und zwei Links auf die downloadbaren Zip-Files, keine Scripte (Javascript usw.) oder sonstige Pakete (Wordpress, Joomla usw.).

Hoster (sam-city) gibt es schon lange, gilt als sauber und macht auch sonst einen guten Eindruck. Diese Woche hat der Hoster übrigens mitgeteilt (sinngemäß): "Infizierte Webseiten: In den vergangenen Wochen haben wir zunehmend Angriffe auf Webseiten unserer Kunden festgestellt. Wer seine Programmpakete nicht umgehend updated, wird demnächst gelöscht." Könnte also ein Seiteneffekt sein.

Jens

19.08.2013 - 12:58 Uhr

@FZelle
OpenGL 1.1 ist die uralte Software Version von OpenGL, d.h. es wurde nie irgendein spezieller Grafik-Treiber installiert, der automatisch Hardware-OpenGL-Unterstützung mitinstallieren würde (d.h. es fehlt die entsprechende DLL). Ein schneller Google-Check lässt allerdings noch eine zweite Möglichkeit zu, nämlich das der Treiber schlicht ältere Versionen nicht unterstützt. Gibt aber wohl ein Update von ATI, das den Bug fixt.

@trib
Schön, daß es auch unter Windows 8 sauber läuft. Rechner mit Nvidia-Grafik sollten eigentlich(!) auch keine Probleme machen, weil ich damit selber ohne Probleme arbeite.

16.08.2013 - 19:36 Uhr

Etwas kurios, aber nach langer Abwesenheit melde ich mich zurück (Passwort funktioniert immer noch), weil das Feedback in diesem Forum immer sehr hilfreich war.

Es wäre ausgesprochen nett, wenn jemand etwas Zeit und Lust hat, die neue 3.03 Version kurz zu testen (erfordert keine Installation, http://modernview.onpw.de ). Interessant sind vor allem Windows 8 Nutzer mit AMD/ATI oder Intel Grafik, da mir nur Windows 7 mit Nvidia Grafik zum Testen zur Verfügung steht.

  • Wird ein Bild im Vollbild-Modus (Doppel-Klick) dargestellt?
  • Erscheinen die Icon-Leiste oder die Thumbnails, wenn man im Vollbild den Mauszeiger an den oberen oder linken Bildschirmrand bewegt?
  • Stürzt das Programm ab (Kandidat: Intel-Grafik im 64-Bit Betrieb)?
  • Gibt es sonst irgendwelche nervigen Bugs?

Ich hatte eigentlich gedacht, daß die OpenGL-Grafiktreiber-Probleme (vor allem im Vollbild) mit dem in Vista eingeführten "Composite Desktop" der Vergangenheit angehören.

Schönen Dank,
Jens

09.11.2006 - 19:46 Uhr

Clipping Ebenen sind die Hackbeile der Computergrafik.
Du positionierst 2 unsichtbare Ebenen so in den Raum, dass sie den Torus schneiden. Alles vom Objekt, was auf der "falschen" Seite der Schnittebenen liegt, wird nicht dargestellt bzw. geclippt.

DirectX Code habe ich nicht, aber die Benutzung von Clipplanes ist einfacher als man vielleicht denkt (hatte es mal mit OpenGL gemacht und dann wieder verworfen).

Noch ein super Beispiel mit super ASCII Grafik und einem Rohr statt Torus:

..............EBENE 1......EBENE 2
...................|................|
...................|................|
ROHR******|****|
...................|................|
...................|................|
geclippt..<--.|...sichtbar..|..--> geclippt

09.11.2006 - 13:32 Uhr

2 Clipplanes sollten reichen, egal, ob der Torus als fertiger Datensatz vorliegt oder erst generiert wird.

22.10.2006 - 21:14 Uhr

Mein beschriebenes Verfahren ist ganz klassisch nach Lehrbuch. Es wird sicherlich noch andere Verfahren geben. Ich mag es, wenn scheinbar triviale Probleme nur nicht-trivial lösbar sind. Das ist also ganz klar ein Fall für Kommissar Google.

22.10.2006 - 20:46 Uhr

Tja, und schon bricht die schöne, neue 3D-Welt in sich zusammen. 😁

Um es kurz zu machen: Transparenz geht nicht wirklich. Du musst die Tiefenstaffelung der Objekte kennen, d.h. sich schneidene, transparente Objekte "per Hand" in mehrere, einzelne Objekte zerlegen, so dass sie sich nicht mehr schneiden, danach ebenfalls "per Hand" tiefensortieren und dann erst in einer gewählten Reihenfolge (von hinten nach vorne oder umgekehrt) mit Alpha-Blending rendern, dabei jedoch nicht in den Z-Buffer schreiben, aber den Z-Test eingeschaltet lassen. Die nicht transparenten Objekte renderst du vorher ganz normal, also ohne vorherige Zerlegung und ohne Alpha-Blending und mit eingeschaltenen Z-Buffer.

10.10.2006 - 15:30 Uhr

Ich glaube dieser Thread verdient ein Update:
Single-Instance C# Application - for .NET 2.0

10.10.2006 - 10:17 Uhr

Original von noi76
Mein Problem: Obwohl ich bei der vorletzten Fläche (verts 24..29) die Texturekoordinaten über 1 hinausgezogen habe und SamplerState[0].AdresseU auf Clamp gesetzt habe, wird die betroffene Texture nur zwischen 0 und 1 gezeichnet. Habe ich etwas vergessen?

🤔 So ist Clamp definiert. 🤔

09.10.2006 - 09:37 Uhr

Die Ereignisbehandlungs-Methoden (Click) sind im User-Codeteil und werden tatsächllich nicht gelöscht. Das hat Vor- und Nachteile. Die Events werden allerdings anständig ausgehängt.

Unschön ist da eher, dass, wenn man im Designer Elemente in eine GroupBox (bzw. wohl allgemein Container-Elemente) einfügt und danach die GroupBox entfernt, die darin enthaltenen Elemente nicht mit entfernt werden.

Allgemein macht der Designer schon einige Probleme, an die man sich gewöhnen muss, wenn man ihn in Anspruch nimmt.

08.10.2006 - 17:48 Uhr

Wenn also dein Objekt zumindest in der Sichtpyramide liegt, dann liegt es vielleicht daran, dass es entweder zu weit weg ist oder die Perspektive hemmungslos überzogenen ist. Mit einem soliden Weitwinkel-Objektiv wird der grosse Mond auch "unsichtbar" und der riesige Mars macht auch ohne Weitwinkel Probleme.

Aber da du bereits ein sichtbares Objekt hast, kannst du ohnehin selbst leicht herausfinden, woran es liegt, indem du es schrittweise in die "Unsichtbarkeit" verschiebst.

08.10.2006 - 16:58 Uhr

Den "Weltraum" stellst du selber ein, aber auf Tips scheinst du offensichtlich eh nicht zu reagieren. 🙄

08.10.2006 - 16:23 Uhr

Vermutlich liegt's an deiner Sichtpyramide (wenn's nicht am Licht liegt, was du aber eh leicht selber feststellen kannst.)

08.10.2006 - 16:18 Uhr

Oder orthogonale Projektion benutzen...

08.10.2006 - 16:16 Uhr

Verschieb das Bild einfach um einen halben skalierten Pixel (vermutlich am einfachsten mit Transform).

07.10.2006 - 02:00 Uhr

Version 1.1 darf man runterladen 🙂
Änderungen:

  • Bessere Unterstützung von 3-Tasten Mäusen durch Umkonfigurierung
  • Kleines Konfigurationsmenü
  • EXIF-Orientierungsflag-Unterstützung
  • Play-Button für animierte GIFs
  • Jede Menge kleinerer Änderungen und Bugfixes

Das wird sehr wahrscheinlich das letzte Update hier sein, weil 1. die 200 KB Grenze so gerade eingehalten werden konnte und 2. vor Windows Vista bzw. .NET 3.0 sich ohnehin kaum etwas Entscheidenes ändern wird. Ansonsten die üblichen Download-Sites bemühen, also etwa http://www.softpedia.com

05.10.2006 - 08:27 Uhr

Ok, keine Kompenente aber ein interessanter Code-Schnipsel, weil ich gestern dafür 3 Stunden das Internet absuchen musste, wobei nach ca. einer Stunde ein offizielles, älteres Posting mit der Aussage "Wird z.Z. nicht unterstützt" hochpoppte.


public int GetFrameDelay(int frame)
{
    int delay;
    PropertyItem item;
    try   { item = bitmap.GetPropertyItem(20736); } // magic number, hard to find!
    catch { return 0; } // not found
    frame *= item.Type; // index into array of delays between frames
    // just in case
    if (frame < 0)
        frame = 0;
    else if (frame >= item.Len)
        frame = 0;
    // be safe
    try { delay = BitConverter.ToInt32(item.Value, frame); }
    catch { return 0; }
    // return milli seconds instead of 1/100th 
    return (delay * 10);
}

28.09.2006 - 00:54 Uhr

OnPreviewKeyDown?

25.09.2006 - 21:19 Uhr

Meine ist auch noch nicht da. Andererseits weiss ich eh nicht, was ich damit anfangen soll. All das, was ich wirklich brauche, gibt's erst ab der Pro Version.

25.09.2006 - 21:07 Uhr

Falls es jemand genauer haben will, dann im Internet nach High Performance Timer oder High Resolution Timer suchen. 16-20 ms Genauigkeit sind das Beste, was man mit Bordmitteln erreichen kann (wegen Threadwechsel). Mit einem HiPerfTimer bekommt man mindestens 0.1 ms Genauigkeit.

21.09.2006 - 13:02 Uhr

Versuch es mal mit Variationen von

ResourceManager rm = new ResourceManager("kdeBA.Properties.Resources", Assembly.GetExecutingAssembly());

Wenn erst mal rm != null ist, kannst du mit deinem

this.Text=rm.GetString("kdeBA.Titel");

rumprobieren.

21.09.2006 - 12:43 Uhr

form.topMost = true;

(Ich bin so gut.)

21.09.2006 - 12:05 Uhr

ACDsee 8.0 (Trial-Version) hat mir auch ausgesprochen gut gefallen als Bildbetrachter (Und ich sollte inzwischen an die 100 Bildprogramme angetestet haben). Die 6.0 Vollversion von der letzten c't Magazin CD hatte ich gerade heute 60 Minuten lang vergeblich versucht zum Laufen zu kriegen. Stützt einfach immer beim Programmstart ab...

Über Lösungen für eine tastaturlose Bedeinung (bzw. eine allgemeine Konfigurations-Möglichkeit) werden ich mal nachdenken.

Der Modus ohne "Allow image to be off center and partially off screen" ist der bevorzugte Modus. Da verhalten sich die Scrollbars auch Windows-konform. Und ich wiederhole mich jetzt: Dynamische Scrollbars sind echte Arschlöcher. Man mag es kaum glauben, aber ca. 25% der gesamten Entwicklungszeit gingen für die verdammten Scrollbars (und alles was damit zu tun hat) drauf. 😁

21.09.2006 - 10:50 Uhr

Original von Wolf_maYer
eigentlich fände ich es besser, wenn man das Bild mit der Maus ziehen könnte und es nicht über die Scrollbars verschiebbar wäre, als dass der Rand des Bildes an den Rand des Fensters kommt. Das ist zumindest meine Arbeitsweise in acdSee und Photoshop (Lieblingstaste Space)

Der erste Satz bereitet mir etwas Verständnisprobleme. Eine Scrollbar erweitert die Möglichkeiten, es gibt eigentlich kein Besser-schlechter oder Entweder-oder. Sie fehlt zwar im angesprochenen Modus bei Bildern, die ins Fenster passen würden, wenn sie nicht verschoben wären, aber sonst gibt es keine Abhängigkeiten.

Ich glaube, du meinst das "Freehand" Bild verschieben (anstatt das Scrollbar-imitierende Bild verschieben) Das gibt es auch in ModernView mit Control + rechte Maustaste. Der "Freehand"-Modus ist nur nicht die Voreinstellung (also ohne Control), weil er für grosse Bilder oder hohen Zoomfaktor sehr unpraktisch ist. Man kann die Richtung des Scrollbar-Modus übrigens auch invertieren, damit es in die gleiche Richting wie der "Freehand"-Modus geht, nur wird mir davon sofort leicht schlecht.

Es wäre sehr einfach, den Freehand-Modus über die Space-Taste verfügbar zu machen (wenn dem so ist, habe Photoshop nicht mehr auf der Platte). Nur hatte ich für die Space-Taste für spater bereits einen Navigator-ähnlichen Modus reserviert/durchdacht, obwohl/weil ich den üblichen Navigator ziemlich unpraktisch und problemtisch finde (doppelte Bildanzeige, zu kleines Bild bei Panaromabildern, Wahrscheinlichkeit von extremem Ruckeln)

Original von Wolf_maYer
Außerdem finde ich das Scrollrad mit der Zoomfunktion fehlbelegt. Besser würde mir hier eine Bild weiter Bild zurück Funktion gefallen.

Shift + Scrollrad.

Original von Wolf_maYer
Evtl. könnte man hier ein Settigsmenu wie es der ZoomPlayer zum Beispiel bietet einbauen 😉 Da kann man alles aber auch wirklich alles einstellen.

Ich hatte auch schon an ein Konfig-Window gedacht, aber das kostet Zeit, die Konsistenz leidet und es könnte auch Probleme machen, weil Click- und Move-Aktionen mit derselben Maustaste (+ Control/Shift) sich gegenseitig bedingen.

Original von Wolf_maYer
Ich hoffe ich habe Dich nicht mit meinen Überlegungen überfallen.

Nö. Es ist eine 1.0 Version, da muss man irgendwann massiv Ideen und Features kappen sonst dauert es Jahre. Und natürlich das ewige Kompatibiltäts- und Gewohnheitsproblem. So unsinnig oder widersprüchlich etwas in anderen Programmen auch sein mag, man will es genau so haben. Wobei sich diese Bemerkung eher auf Photoshop bezieht. Als Bildbetrachter eine Katastrophe: hässlich, langsam, inkonstent, ineffizient, mühselig und verbuggt bis zum Abwinken.

20.09.2006 - 18:56 Uhr

Hallo maYer,

wenn ich dich richtig verstanden habe, dann gibt's keine Scrollbars im "Allow image to be off center and partially off screen" Modus, obwohl das Bild teilweise ausserhalb des Bildschirm ist. Das Verhalten kenne ich und sollte es nicht geben, wenn man wirklich Windows-konform sein will. Aber immerhin kann man mit Maus und Tastatur weiterhin scrollen, die unsichtbaren Bildteile sind also nur nicht über eine Scrollbar erreichbar.

Ein paar schlechte Ausreden dafür: Der Hauptgrund ist, dass mir dieser Modus irgendwann gar nicht mehr gefallen hat und ich jede Arbeit daran eingestellt hatte. Ich glaubte auch, dass es mich einiges an Arbeit kosten würde, es richtig zu machen, wozu ich eben keine Lust mehr hatte. Viele Bildbetrechter verzichten gänzlich auf (dynamische Windows-konforme) Scrollbars, weil sie wahrlich das GUI-Trivial-Arschloch schlechthin sind. Ich kenne kein einziges Programm (von Photoshop über Gimp bis zum In-15-Minuten-fertig-Bildbetrachter), die dabei nicht ins Stolpern geraten oder die Stolpersteine aus dem Weg gehen.

Was mich interessieren würde: Findest du den Modus eigentlich sinnvoll oder hast du einfach nur damit rumgespielt?

13.09.2006 - 02:40 Uhr

Version 1.0 ist fertig. Endlich!

11.09.2006 - 15:16 Uhr

Mit den Image-Methoden der Bitmap-Klasse. Die einzelnen Frames zu selektieren ist programmtechnisch allerdings ziemlicher Krampf. Tip: Bei www.codetools.com suchen.

09.09.2006 - 00:14 Uhr

Ich habe deine Sachen nicht so genau durchgelesen und mir vor mener Antwort auch nicht viel Bedenkzeit gelassen. Also alles unter Vorbehalt: Setze deine Map-Position einfach auf gültige Werte NACHDEM du gescrollt hast (aber bevor sie angezeigt wird). Das zweite Problem sollte es eigentlich nicht geben. Scrollst du relativ oder absolut. Wenn absolut, dann könnte das dein Problem erklären.

06.09.2006 - 12:32 Uhr

Original von egrath
Serializable: Ein mit diesem Attribut gekennzeichnetes Element kann zur Laufzeit von Serializer persisitiert (und natürlich auch wiederhergestellt) werden.

Kleine Off-topic Anmerkung dazu:
Ich bin nicht viel weiter mit dem Lesen gekommen als bis hier. Das Problem mit solchen Beschreibungen, die auch Microsoft gerne verwendet, liegt darin, dass sie nichtssagend sind. Sie sind zunächst selbstereferenziell. Beispiel: "Instanziierung: Man erstellt eine Instanz, indem man ein Objekt instanziiert". Oft sind die Beschreibungen auch in sich geschlossene Kreisläufe. Also etwa: "Ein Objekt kann persistiert werden. Serialisierung ermöglicht auf einfache Weise Persistierung. Persistierung wird durch Serialisierung implementiert." Dabei werden auch gerne Begriffe benutzt (persistiert), mit denen man gerade als Anfänger erst mal nichts anfangen kann. Genauso gerne führt Microsoft auch neue Begriffe für altbekannte Dinge ein (Delegate = Callback). Und es fehlt schlicht an grundlegenden Sachen wie Definitionen oder zumindest umgangssprachliche Erklärungen.

Mein Posting ist zwar mehr eine Kritik an der MS "Dokumentation", aber der obige Schnipsel kopiert exakt dieses Schema. Der Rest des Artikels ist vermutlich ausgezeichnet geschrieben. Bei Bedarf kann mein Posting auch gelöscht werden, da es sich nicht wirklich mit dem Artikel beschäftigt.

04.09.2006 - 16:01 Uhr

Erst mal Danke für die Beiträge!

Chaossurfer, Drag & Drop haben viele (Bild-)Programme und ist auch trivial. Nicht gerade viel komplizierter ist das Prüfen der akzeptierten Datei-Endungen. Aber obwohl es ebenfalls einfach ist, machen das deutlich weniger. Echte Verzeichnisse (keine Links auf Verzeichnisse) sind meist auch nicht erlaubt. Seltsam.

Ich habe eigentlich nicht erwartet, dass es Performance-Probleme gibt (wird hier angenehmerweise bestätigt) sondern eher Darstellungsprobleme (mehr dazu im nächsten Absatz). Das Programm macht nichts aufwendiges und den Slider im Render-Tab hatte ich nur eingeführt, weil ich dachte, damit eine fürchterliche Scrollbar-Verzögerung auf einem fremden Rechner in den Griff zu kriegen. Nur hatte die Verzögerung damit nichts zu tun. Was das Problem ist, weiss ich nach wie vor nicht. Jetzt gibt es halt die "Thumb Track" Checkbox im Pan-Tab. Wird wahrscheinlich auch nichts helfen, aber mehr kann ich nicht machen.

Noch mal zurück zu den nVidia Problemen. nVidias OpenGL-Treiber verträgt sich nicht mit GUI-Elementen. D.h. eben auch, dass die Integration von OpenGL-Programmen in die grafische Windows-Benutzeroberfläche nicht funktionieren kann. Am offensichtlichsten sind da immer noch die Tooltips. Beispiel: Irgendein OpenGL-Programm im Fenster starten (also auch ModernView), dann das Taskbar-Start-Kontextmenü öffnen, auf einen Eintrag rechts gehen und warten bis der Tooltip erscheint. Wenn der Tooltip in das OpenGL-Fenster hineinreicht, wird er sofort abgeschnitten.

Bei Standardeinstellungen werden Tooltips per Alpha-Blending ein- und (Achtung!) ausgeblendet. In diesem Fall sendet Windows kein Paint Event an das Programm, dass vom Tooltip verdeckt wurde. Wenn sich der OpenGL-Bildinhalt zwischenzeitlich geändert hat (Tooltips verschwinden erst wieder nach ein paar Sekunden), restauriert Windows/Nvidia veraltete Bildschirminhalte. Das Ganze scheint auch höchst zufallig zu sein. Ich vermute, dass es mit Timing, Double-Buffering und VSync zu tun hat. (ModernView verwendet Double-Bufffering und VSync, ist auch die OpenGL-Voreinstellung, der Windows-Desktop hat weder Double-Buffering noch VSync).

Die "Intergration" funktioniert eigentlich nur, wenn GUI-Elemente nicht im OpenGL-Bildbereich liegen. Bei ModernView ist die Toolbar in der Fensteransicht ausserhalb, im Vollbild jedoch über dem Rendering-Bereich. Im Vollbild gab es daher auch mit älteren nVidia-Treibern grosse Probleme. Da poppte beispielsweise das bereits geschlossene Konfigurations-Window wieder auf, wenn die Tool-Iconbar angezeigt wurde. Oder das Bild änderte ohne jeden Grund kurz (für 1 Bild) die Zoomstufe, als wenn noch mal veraltete Speicherabbilder kurz sichtbar wurden.

03.09.2006 - 12:34 Uhr

cadi, doch es geht (sollte gehen). Ältere Treiber machen etwas mehr Probleme.

Die Fehlermeldung ist nicht von mir und habe ich noch nie gesehen. Wenn ich den Text richtig interpretiere, dann hast du einen Treiber-Konflikt, evtl. nicht sauber verschiedene Treiber-Updates de/installiert. Läuft denn bei dir irgendein anderes OpenGL-Programm?

03.09.2006 - 11:53 Uhr

Original von Nordwald
Gute Software, sieht professionel erstellt aus. Du solltest dir allerdings nicht den Source-Code anschauen. Da habe ich so ziemlich sämtliche Richtlinien missachtet, die hier propagiert werden. Das muss ich noch mal kräftig aufräumen.

_Original von Nordwald_Was ich vermisse ist ein simpler "open"-menüpunkt" und vielleicht eine Option bildaten mit dem Programm zu verknüpfen.

Beides wunde Punkte. Reicht ein simpler OpenFileDialog? Alles andere macht viel Arbeit, wenn man es richtig machen will und nimmt Platz weg. Die Verknüpfung ist problematisch. Nicht wenige Bildbetrachter, die ich ausprobiert habe, entfernen ihre Registry-Einträge nicht richtig. Da traue ich mich ohne Unterstützung nicht ran (VS Setup-Projekte gibts nicht in der Express Version). Ausserdem wird jeder sicherlich ein Bildbearbeitungsprogramm besitzen, das die Bildformate schon in Beschlag genommen hat.

_Original von Nordwald_Und vieleicht eine Option um animierte Bilder in einer schleife in allen Frames zu zeigen...sie also zu "animieren".

Ich kann keine Ladezeiten garantieren und vorgeladen wird auch nicht. "Page down" gedrückt halten ist vielleicht ausreichend.

Original von Nordwald
Die Frameansicht ist nützliches feature das man in anderer Software auch nicht oft vorfindet.

Dadurch hebt sich vor allem das Bild angenehm vom Hintergrund ab.

Original von Nordwald
Vielleicht wärs auch praktisch die VOllbildansicht mit einen einfachen Doppelklick verlassen zu könne.

Besser nicht.

Original von Nordwald
Ich benutze eine nVIDIA 5600 Karte mit ForceWare-Treiber unter Windows XK unr mir fällt kein einziger Grafischer Fehler oder Verzögerung auf. Alles läuft sehr flüßig.

Du musst die Tooltips einschalten und zum Anzeigen bringen. Es geht ja auch machmal. Im Vollbild gibt es noch die meisten Probleme. Nicht ohne Grund ist das Ganze so gestaltet, dass es zu möglichst wenig Komplikationen kommt (keine Kontextmenues, abschaltbare Toolstips usw)

Komisch, dass bei dir der Toolbar-Hintergrund so ganz und gar weiss ist. 🤔

03.09.2006 - 10:10 Uhr

ModernView ist ein schicker OpenGL-Bildbetrachter mit supersanftem Zoomen und Scrollen. Erforderlich sind .net 2.0 und OpenGL 1.5. Die Sprache ist Englisch.

Er funktioniert am besten mit einer möglichst hohen Monitor-Bildwiederholrate. Eine 4/5-Button-Maus ist ebenfalls willkommen. Befehle/Tastenkombinationen sind im Help beschrieben, aber die Lupenfunktion (Control + linke Maustaste) macht besonders viel Spass, wenn man die Maustaste mehrmals schnell hintereinander drückt. 😁

Screenshot und Zip-Anhang sind aktuell. Der nachfolgende Absatz bezog sich auf die Beta-Version von vor 10 Tagen.


ModernView ist ein schicker OpenGL-Bildbetrachter (ohne Bearbeitungsfunktionen) und braucht noch etwas Beta-Testing und Feedback bevor er Freeware sein darf.

Interessiert wäre ich vor allem an Erfahrungen mit ATI-Grafikkarten. Die nVidia-Treiber sind nicht Windows-XP-kompatibel. Zum Testen am besten die Tooltips in der Konfiguration einschalten und ein bisschen zoomen oder scrollen. Hier lässt nvidia Dreck zurück, wie überhaupt alles, was mit Transparenzen (Schatten, ein-und ausblendende Tooltips oder Kontextmenus) zu tun hat, nicht wirklich funktioniert. Schön wäre auch zu wissen, ob es auf Windows Vista läuft. Ansonsten kann natürlich auch jeder schreiben, was er will.

02.09.2006 - 23:21 Uhr

Das Programm macht den Eindruck als wäre es mit dem C#-OpenGL-Framework erstellt worden. Die kostenlose und freie Basis-Version mit Source-Code kann man sich nach Registrierung hier herunterladen:
http://www.csharpopenglframework.com

31.08.2006 - 00:41 Uhr

Original von Peter Bucher

Original von nop
Bei beiden Ansätzen musst du ausserdem deine Maus neu positionieren.
Ja, stellt aber kein Problem dar, einfach die akt. Position speichern und wiederherstellen.

Nein, die Maus ist ein physikalisches Gerät. Entweder gilt meine Aussage oder der Cursor springt. Beides ist nicht willkommen, aber zugegeben auch nicht allzu wichtig.

31.08.2006 - 00:25 Uhr

Original von Peter Bucher

Original von nop
Ich persönlich finde ja das Festhalten des Cursors sehr unschön.
Wieso denn das?
Original von nop
Alternativ kannst du den Cursor unsichtbar machen.
Das finde ich jetzt aber sehr unschön.

Cursorbewegungen repräsentieren Mausbewegungen. Wenn man diese Regel durchbricht, dann wird es verwirrend. Ich mag auch keinen unsichtbaren Cursor, aber immer noch besser als den Cursor sichtbar festhalten. Bei beiden Ansätzen musst du ausserdem deine Maus neu positionieren. Schau dir mal allgemein das Verhalten der Scrollleisten von Windows an und beachte, was passiert, wenn der Scrollbalken am Anschlag ist und du die Maus zunächst weiterbewegst und dann wieder zurückbewegst.

31.08.2006 - 00:06 Uhr

Ich persönlich finde ja das Festhalten des Cursors sehr unschön. Alternativ kannst du den Cursor unsichtbar machen. Und Scrolling geht natürlich mit oder ohne Cursorbewegung (nachdem zumindest die Richtung bekannt ist). Die Benutzung eines Timers bietet sich da an.

Noch ein kleiner Hinweis: Das Loslassen der rechten Maustaste über der oberen Windowleiste öffnet zuerst das Kontextmenu. Erst wenn sich das erledight hat, bekommst du ein Mouse-Up-Event. 🙄

29.08.2006 - 16:18 Uhr

Original von tequila slammer
geht nicht. Intellisence bietet mir dies nicht an.
Ich habe herausgefunden, dass ich auch ein normales TextLabel nicht verändern kann. Es liegt also anscheinend nicht am ToolStrip.

Ich bin zwar noch neu auf dem Gebiet aber ein Labeltext konnte ich recht schnell verändern 🙂

Wenn StatusLabel.Refresh() nicht vorhanden ist, dann rufe Refresh() von der Klasse auf, in der das Label eingebunden ist, also Toolstrip.Refresh(). Bin mir allerdings nicht sicher, ob du vor dem Refresh() nicht noch ein Invalidate() brauchst. Ansonsten muss das gehen, mache ich nämlich dauernd.

Edit: DoEvents() brauchst du aber dennoch.

17.08.2006 - 09:17 Uhr

Ich stelle gerade fest, dass SourceSafe in der Standard-Version auch nicht enthalten ist. Mir (wie gesagt) egal. Aber Setup-Projekte gibt es auch erst ab der Pro-Version. Da ist es kein Wunder, dass sich hier kein rasanter Andrang auf die Standard-Version einstellt.

17.08.2006 - 05:04 Uhr

Mathias & LastGentleman, die ersten Clips aus der AdventureWorksCinema Reihe funktionieren. Viel schlimmer ist da, dass der lange und dröge Einführungsclip (nicht nett, aber ehrlich formuliert) keinen Code als Entschädigung rausrückt. Da war ich kurz davor, zum 2. Mal das Handtuch zu werfen.

An der Standard-Edition interessieren mich eigentlich nur 3 Sachen:

  1. Die Icon-Libray hatte ich vor einiger Zeit schmerzlich vermisst. Aber da ich inzwischen endlich eine brauchbare gefunden habe (http://icon-king.com/?p=15), interessiert mich das nicht mehr.

  2. SourceSafe wäre nett gewesen, aber Speichern und Brennen des kompletten Projekts mit Datum tut es auch und spart etwas Arbeit (erspart Kommentare wie "Bug 434 hoffentlich gefixt, so ein hundsverdammter Satanskäfer, also wirklich!", "Diese Klasse ist jetzt etwas weniger peinlich und unfähig, weil ich dies & das gemacht habe" usw. 😉 )

  3. Wirklich verlockend ist nur der eingebaute Obfuscator (in der Billig-Version), da ich den einzigen Freeware-Obfuscator (Name entfallen) auch nicht zum Laufen gekriegt habe und alle Anderen ein Heidengeld kosten.

07.08.2006 - 11:29 Uhr

Ich wundere mich immer wieder, wie oft die (vielleicht zu) höflich formulierten Ratschläge von herbivore hier im Forum überlesen oder nicht ernsthaft in Erwägung gezogen werden.

25.07.2006 - 15:36 Uhr

Ich bin kein MDI-Experte und habe MDI in meiner Anwendung eh verbannt. Für mich brauchst du das Projekt als nicht zur Verfügung stellen.

Wenn du heute aber noch einen fetten Dämpfer brauchst 😉, dann kann ich dir schon mal sagen, dass NVidia-Treiber unfassbarer Schrott sind. Kombinationen aus GDI, Transparenzen oder OpenGL-3D-Fenster erzeugen Bildermüll. Besserung ist evtl. mit Windows Vista in Sicht. Bisher hat es NVidia aber einen Dreck interessiert, ob sowas funktioniert. (Ausser nicht nachvollziehbarer und nicht funktionierender Hackerei hat sich da seit Jahren nichts getan.)

25.07.2006 - 15:01 Uhr

Hatte jetzt nicht den ganzen Thread noch mal gelesen. Also wird es wohl auf einen Rendering-Context (RC) pro Fenster hinauslaufen. (Das ist bekanntermassen nicht optimal. Es gibt zwar noch die Möglichkeit ein unsichtbares OpenGL-Proxy-Window zu benutzen, wodurch man (glaube ich!) auch für mehrere Fenster mit nur einem RC auskommt, aber ich kenne mich damit nicht aus und es wäre zu diesem Zeitpunkt eh verfrüht damit zu experimentieren.) Wenn du allerdings ein Fenster in das Hauptfenster komplett einbettest (eben für das Fenster den Parent setzt), dann solltest du zumindest den zugehörigen RC wiederverwenden können.

25.07.2006 - 13:17 Uhr

In deinen Überlegungen warst du vor 2 Wochen schon weiter, d.h. die Lösung hast du dort schon beschrieben. Warum probierst du es dann nicht? Soweit ich mich erinnere braucht man allerdings nur einen OpenGL-Rendering-Context. Den kann man mit GetDC() und MakeCurrent() für andere Fenster wiederverwenden.

Nebenbei: Brauchst du eigentlich MDI und gefällt dir MDI generell? Mir z.B. gefällt MDI überhaupt nicht. Ich sehe auch erst mal keinen Grund nur mit einem OpenGL-Fenster zu arbeiten. Soweit ich es verstanden habe ist immer nur ein/e Sicht/Fenster jeweils aktiv. Warum renderst du dann nicht in dasselbe Fenster? Das Einzige, was du dann "umschalten" musst, ist dein Rendering-Code.

24.07.2006 - 16:13 Uhr

Bei sowas ist linearer Aufwand immer wichtig. Erste, grobe Idee: Gib jeder Linie eine eindeutige Nummer (ID) und rastere die kurzen Linien in einen ID Framebuffer, der pro Pixel mehrere IDs speichern kann. Jede eingetrage ID bedeutet also eine Kollision. Wenn mehr IDs pro Pixel gespeichert werden sollen als du Platz reserviert hast, musst du das irgendwie auflösen.