ViewPort-Problem

Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

ViewPort-Problem

 · 
Gepostet: 07.03.2022 - 14:38 Uhr  ·  #1
Hallo Zusammen,

ich möchte aktuell erstmals ViewPorts verwenden und hab da eine Unstimmigkeit gefunden.
Folgender Code .... Ich definiere 3 gleich große Viewports auf einem 240x128-Pixel-Display und lasse mir den Frame anzeigen. Dann wechsle ich in den ViewPort, stelle die Textausrichtung ein und gebe Text aus. Da ich wissen wollte, ob diese Einstellung beibehalten wird, wechsle ich später nochmals in die ViewPorts und gebe nochmal Text aus.
Bei alHorLeft und alHorCenter schaut das auch normal aus, aber bei alHorRight kann was nicht stimmen. Ich mache eine Ausgabe auf X=180 und sehe was, wo doch der ViewPort nur 58 breit ist.
Code

Procedure TestGraph;                                  // ViewPort-Test
  Begin
    gOpenView(1,  1,  1, 60,126);
    gOpenView(2, 81,  1,140,126);
    gOpenView(3,161,  1,220,126);
    gFrameView(1);
    gFrameView(2);
    gFrameView(3);
    gSwitchView(1);
    gSetTextJustify(alHorLeft,alVertTop);
    gDrawString(40,46,2,2,TxtRot0,'Testausgabe');
    gSwitchView(2);
    gSetTextJustify(alHorCenter,alVertTop);
    gDrawString(40,66,2,2,TxtRot0,'Testausgabe');
    gSwitchView(3);
    gSetTextJustify(alHorRight,alVertTop);
    gDrawString(180,86,2,2,TxtRot0,'Testausgabe');
    
    gSwitchView(1);
    gDrawString(40,66,2,2,TxtRot0,'ABCDEFGHIJKLMNOPQ');
    gSwitchView(2);
    gDrawString(40,86,2,2,TxtRot0,'ABCDEFGHIJKLMNOPQ');
    gSwitchView(3);
    gDrawString(180,106,2,2,TxtRot0,'ABCDEFGHIJKLMNOPQ');
    
    gSwitchView(0);
    gDrawString(30,26,2,2,TxtRot0,'ABCDEFGHIJKLMNOPQ');
    gDrawLine(180,0,180,127,$33);
    gDispRefresh;
  End TestGraph;


Wenn man den linken ViewPort(1) anschaut und die Ausgabe, stimmt da auch was nicht. Breite des ViewPorts ist 58 und Ausgabe auf X40 ..... das sieht eher wie Ausgabe auf X20 aus.

Die gestrichelte Linie ist bei X180 ViewPort(0).

Gruss
Harry
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
TheBeginner
Schreiberling
Avatar
Geschlecht: keine Angabe
Herkunft: Wunsiedel Bayern
Alter: 68
Beiträge: 776
Dabei seit: 06 / 2013
Betreff:

Re: ViewPort-Problem

 · 
Gepostet: 07.03.2022 - 17:14 Uhr  ·  #2
Hallo Harry, der ViewPort stimmt schon lange nicht.


Gruß Frank
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: ViewPort-Problem

 · 
Gepostet: 07.03.2022 - 19:04 Uhr  ·  #3
Hi Frank,

ach DAS war das Problem? Wegen dem wir schon vor ein ... zwei Jahren geredet haben?
Mist. Vielleicht kann Merlin das reparieren :)

Gruss
Harry
Harry
Moderator
Avatar
Geschlecht:
Herkunft: zwischen Augsburg und Ulm
Alter: 60
Beiträge: 2155
Dabei seit: 03 / 2003
Betreff:

Re: ViewPort-Problem

 · 
Gepostet: 08.03.2022 - 13:44 Uhr  ·  #4
Hallo,

ich hab was raus gefunden .....
Wenn man zusätzlich zur ViewPort-Definition auch ein ScaleView macht (Auch wenn es die gleiche Größe bleibt!), funktioniert vieles plötzlich richtig. Vorher wurden bei mir die Rechtecke falsch gezeichnet und die Ausrichtung des Textes war falsch!

Code

Procedure TestGraph;                                  // ViewPort-Test
  Begin
    gOpenView(1,  0,  0, 31, 71);
    gScaleView(1, 0, 0, 31, 71);
    gOpenView(2, 32,  0, 63, 71);
    gScaleView(2, 0, 0, 31, 71);
    gOpenView(3, 64,  0, 95, 71);
    gScaleView(3, 0, 0, 31, 71);
    gDrawLine( 0,72, 0,80,$FF);
    gDrawLine(31,72,31,80,$FF);
    gDrawLine(32,72,32,80,$FF);
    gDrawLine(63,72,63,80,$FF);
    gDrawLine(64,72,64,80,$FF);
    gDrawLine(95,72,95,80,$FF);
    gDrawLine(96,71,104,71,$FF);
    gDrawLine(96,23,104,23,$FF);
    gDrawLine(96,24,104,24,$FF);
    gDrawLine(96,47,104,47,$FF);
    gDrawLine(96,48,104,48,$FF);
    gDrawLine(96,71,104,71,$FF);
    gDrawString( 8,76,2,2,TxtRot0,'R');
    gDrawString(40,76,2,2,TxtRot0,'G');
    gDrawString(72,76,2,2,TxtRot0,'B');
    gDrawString(100, 3,1,2,TxtRot0,'Modul1');
    gDrawString(100,27,1,2,TxtRot0,'Modul2');
    gDrawString(100,51,1,2,TxtRot0,'Modul3');

    gSwitchView(1);
    gSetTextJustify(alHorCenter,alVertTop);
    gDrawString(0, 6,1,1,TxtRot0,'0123456789');
    gDrawRect(0,0,31,71,$FF);
    gSwitchView(2);
    gSetTextJustify(alHorCenter,alVertTop);
    gDrawString(0,16,1,1,TxtRot0,'0123456789');
    gDrawRect(0,0,31,71,$FF);
    gSwitchView(3);
    gSetTextJustify(alHorCenter,alVertTop);
    gDrawString(0,26,1,1,TxtRot0,'0123456789');
    gDrawRect(0,0,31,71,$FF);
    
    gSwitchView(1);
    gSetTextJustify(alHorLeft,alVertTop);
    gDrawString(10,36,1,1,TxtRot0,'ABCDEFGHIJ');
    gSwitchView(2);
    gSetTextJustify(alHorLeft,alVertTop);
    gDrawString(10,46,1,1,TxtRot0,'ABCDEFGHIJ');
    gSwitchView(3);
    gSetTextJustify(alHorLeft,alVertTop);
    gDrawString(10,56,1,1,TxtRot0,'ABCDEFGHIJ');
    
    gDispRefresh;
  End TestGraph;


Die Linien unten zeigen die 3 Bereiche der ViewPorts in X-Richtung. Die untere Markierung rechts zeigt die Höhe der ViewPorts. Das "Modul1-3" nicht beachten, das ist nur, weil das bei mir 3 zusammen geschaltete LED-Module sind. Diese 3 Module haben eine Auflösung von 32x72 RGB-LEDs. Wenn ich im ViewPort 1 "Seggl" schreib, im ViewPort 2 "Daggl" und im ViewPort 3 "Depp" (mit unterschiedlichen Koordinaten) und refreshe, steht im Display in rot "Seggl", in grün "Daggl" und in blau "Depp" auf dem Display.

Gruss
Harry
Der an diesem Beitrag angefügte Anhang ist entweder nur im eingeloggten Zustand sichtbar oder die Berechtigung Deiner Benutzergruppe ist nicht ausreichend.
Gewählte Zitate für Mehrfachzitierung:   0

Registrierte in diesem Topic

Aktuell kein registrierter in diesem Bereich

Die Statistik zeigt, wer in den letzten 5 Minuten online war. Erneuerung alle 90 Sekunden.
MySQL Queries: 15 · Cache Hits: 14   78   92 · Page-Gen-Time: 0.025626s · Speichernutzung: 2 MB · GZIP: ein · Viewport: SMXL-HiDPI