Problem mit SimpleOpenGlControl und Resizing

Die Programmiersprache C# und Programmierung im .NET Framework/Mono
Antworten
Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Problem mit SimpleOpenGlControl und Resizing

Beitrag von cloidnerux » Mo Apr 05, 2010 7:53 pm

Also ich will mit Tao und deren Implementation etwas mit OpenGl zeichnen.
Das Funktiniert auch alles Wunderbar, nur in einigen Fällen, wenn man das Fenster Vergrößert wird nicht der Resize-Handler aufgerufen doer er macht nicht das was er soll. Es ist mir bisher nur passiert, das es nicht richitg Funktionierte, wenn man das Fenster auf Fullscreen schaltet. Die zu Grunde liegende SimpleOpenGlCOntrol hat Dock auf Fill, also wird sie definitv vergrößert.
Hier der Event-handler Code:

Code: Alles auswählen

        private void renderContext_Resize(object sender, EventArgs e)
        {
            vertikalStretch = (float)renderContext.Height / (float)startUpWindowHeight;
            horizontalStretch = (float)renderContext.Width / (float)startUpWindowWidth;
            Resize(renderContext.Height, renderContext.Width);
        }
        private void Resize(int height, int width)
        {
            Gl.glViewport(0, 0, width, height);
            Gl.glMatrixMode(Gl.GL_PROJECTION);
            Gl.glLoadIdentity();
            const float nRange = 80.0f;
            if (height == 0)
            {
                height = 1;
            }
            Gl.glOrtho(-nRange * width / height,
                nRange * width / height,
                -nRange, nRange, -1.0, 1.0);
            Gl.glMatrixMode(Gl.GL_MODELVIEW);
            Gl.glLoadIdentity();
        }
Sprache ist C#, vertikalStretch und horizontalStretch dienen nur dazu, Maus-koordinaten korrekt umzurechnen.

Danke für Hilfe.
MfG cloidnerux.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Problem mit SimpleOpenGlControl und Resizing

Beitrag von Xin » Mo Apr 05, 2010 8:30 pm

cloidnerux hat geschrieben:Das Funktiniert auch alles Wunderbar, nur in einigen Fällen, wenn man das Fenster Vergrößert wird nicht der Resize-Handler aufgerufen doer er macht nicht das was er soll.
Was heißt das?
Wird er gerufen oder nicht? Setz doch mal einen Breakpoint rein!?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Problem mit SimpleOpenGlControl und Resizing

Beitrag von cloidnerux » Mo Apr 05, 2010 8:59 pm

Wird er gerufen oder nicht? Setz doch mal einen Breakpoint rein!?
Gerade versucht: er wird aufgerufen!
Anscheinend arbeitet die Resize Methode nicht richtig.
Wenn ich das Fenster vergrößer, dann bleibt die Ursprüngliche größe für den OpenGl Render Context. Wenn ich das Fenster dann aber über die Maus in der größe Veränder, dann funktioniert es wieder.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Problem mit SimpleOpenGlControl und Resizing

Beitrag von Xin » Mo Apr 05, 2010 10:05 pm

cloidnerux hat geschrieben:
Wird er gerufen oder nicht? Setz doch mal einen Breakpoint rein!?
Gerade versucht: er wird aufgerufen!
Anscheinend arbeitet die Resize Methode nicht richtig.
Wenn ich das Fenster vergrößer, dann bleibt die Ursprüngliche größe für den OpenGl Render Context. Wenn ich das Fenster dann aber über die Maus in der größe Veränder, dann funktioniert es wieder.
Also funktioniert das Resize nur beim Verkleinern?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Problem mit SimpleOpenGlControl und Resizing

Beitrag von cloidnerux » Mo Apr 05, 2010 11:05 pm

Also funktioniert das Resize nur beim Verkleinern?
Nein, sondern nur Sporadisch. Das ist auch gerade mein Problem, dass ich nämlich den Fehler schlecht reproduzieren kann.
Er tritt nur manchmal auf, bisher nur, wenn ich das Fenster über den Fullscreen Button des Systems vergrößer, aber selbst das nicht immer.
Wenn ich die SimpleOpenGLControl z.B in ein SplitContainer packe und die größe ändere Funktioniert alles wunderbar.
Ich werde mal ne Nacht darüber schlafen, dann wird mir sicherlich was einfallen, denn wer sucht, der findet.

MfG cloidnerux.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8859
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Problem mit SimpleOpenGlControl und Resizing

Beitrag von Xin » Di Apr 06, 2010 9:36 am

cloidnerux hat geschrieben:
Also funktioniert das Resize nur beim Verkleinern?
Nein, sondern nur Sporadisch. Das ist auch gerade mein Problem, dass ich nämlich den Fehler schlecht reproduzieren kann.
Er tritt nur manchmal auf, bisher nur, wenn ich das Fenster über den Fullscreen Button des Systems vergrößer, aber selbst das nicht immer.
Kann es sein, dass MaxSize oder MinSize Dir in die Quere kommen?
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3123
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Problem mit SimpleOpenGlControl und Resizing

Beitrag von cloidnerux » Di Apr 20, 2010 4:39 pm

Kann es sein, dass MaxSize oder MinSize Dir in die Quere kommen?
Nein, der Fehler tritt nur Sporadisch auf.
Ich habe den Fehler im Moment "unterdrückt":
Ich hatte für ein Programm eine zweite GUI gebastelt, die ich zum Vergleich über die erste aufgerufen habe. Meistens trat der Fehler dann auf, wenn ich die zusätzliche GUI zum zweiten(n-ten) mal aufgerufen habe.
Da ich diese Oberfläche aber nun direkt beim Starten Aufrufe, hat es sich erledigt.
Anscheinend hängt es auch mit dem Dock-Container den ich dort verwende zusammen(http://www.codeproject.com/KB/toolbars/ ... ainer.aspx) aber da es mir nicht wirklich möglich war die Fehlerquelle ausfindig zu machen, lasse ich ihn außen vor und Kümmer mich bei gelegenheit oder bedarf darum.
Redundanz macht wiederholen unnötig.
quod erat expectandum

Antworten