kramann.info
© Guido Kramann

Login: Passwort:










10.1 Umgang mit verschiedenen Bildschirmauflösungen

10.1 Handling different screen resolutions (EN google-translate)

10.1 Obsługa różnych rozdzielczości ekranu (PL google-translate)

Lösung
solution
rozwiązanie
  • Jedes dargestellte Element wird mit Hilfe der draw()-Methode von PGraphics gezeichnet.
  • Position und Größe jedes Elements werden horizontal als Vielfache von width und vertikal von height formuliert.
  • Das grafische Formulieren einer eigens entworfenen Schrift, beseitigt auch hier das Abhängigkeitsproblem von der Auflösung und dem Verhältnis von Bildschirmbreite- und höhe, indem kein Font benutzt wird.

Durch unterschiedliche Verhältnisse von Bildschirmhöhe zu - breite entstehende Verzerrungen bei einigen Devices werden bewußt in Kauf genommen, um komplizierte Fallunterscheidungen vermeiden zu können.

Due to different ratios of screen height to - wide resulting distortions Some devices are deliberately accepted to avoid complicated case distinctions can.

Ze względu na różne proporcje wysokości ekranu do - szeroko wynikłe zniekształcenia Niektóre urządzenia są celowo akceptowane, aby uniknąć złożonych rozróżnień między przypadkami może.

private String[][] b = {
                               {"A","2125","0323","0305","B301"},
                               {"B","0105","0111","0313","0515","b211","b112","b213","b114"},
                               {"C","B301","B403"},
                               ...
                        };

Code 10.1-1: Definition, wie die Buchstaben gezeichnet werden sollen in der Klasse info.kramann.text.Hzeichen

    public void Bogen4(int x1,int y1, float xoff, float yoff)
    {
         float mx = xoff+0.5f*xraster+2.0f*xraster+xraster*(float)x1;
         float my = yoff+yraster*(float)y1;
         pap.arc(mx,my,xraster*4.0f,yraster*4.0f,pap.HALF_PI,pap.PI);
    }

Code 10.1-2: Umsetzung der als String kodierten Zeichenbefehle am Beispiel eines Kreisbogens. - xraster, yraster sind Breite und Höhe eines Gitterrasters, welches abhängt von width, heigth, sowie der Anzahl der Zeilen und Spalten des Textbereiches.

    public void tonband(float xx, float yy)
    {
        float x = xx*xraster;
        float y = yy*yraster;
        
        float bx = 2.0f*xraster;
        float by = 2.0f*YFAKTOR*yraster;
        
        //pap.strokeWeight(STIFTDICKE);
        pap.noStroke();
        pap.fill(178,  178,  178);
        pap.ellipse(x,y,bx,by);
        pap.fill(51,51,51);
        pap.ellipse(x,y,bx*0.25f,by*0.25f);

        pap.rect(x-bx*0.06f*0.5f,y+by*0.2f,bx*0.06f,by*0.2f,8,8,8,8);
        pap.rect(x-bx*0.06f*0.5f,y-by*0.4f,bx*0.06f,by*0.2f,8,8,8,8);

        pap.rect(x+bx*0.2f,y-by*0.06f*0.5f,bx*0.2f,by*0.06f,8,8,8,8);
        pap.rect(x-0.4f*bx,y-by*0.06f*0.5f,bx*0.2f,by*0.06f,8,8,8,8);
        
    }

Code 10.1-3: Zeichnen einer der Tonbandrollen relativ zu width und height (xraster und yraster).