kramann.info
© Guido Kramann

Login: Passwort:










EmbSyst
1 day_by_day
2 Eingebettete_Systeme
..2.1 Softwareentwicklung
....2.1.1 AgileSoftwareentwicklung
....2.1.2 Verhalten
....2.1.3 Entwurfsmuster
....2.1.4 FuzzyRegler
....2.1.5 Uebung
..2.2 Arduino
....2.2.1 Uebung1
..2.3 Android
....2.3.1 UML
......2.3.1.1 Volumenberechnung
......2.3.1.2 UML_Klassendiagramm
......2.3.1.3 Konstruktor
......2.3.1.4 Statische_Variable
....2.3.2 bluej
....2.3.3 Threads
....2.3.4 Interfacedesign
....2.3.5 Android
......2.3.5.1 Getting_Started
......2.3.5.2 App
......2.3.5.3 Beispielprojekt
........2.3.5.3.1 Richtlinien
........2.3.5.3.2 Anforderungen
........2.3.5.3.3 Layout
........2.3.5.3.4 Projekt_einrichten
........2.3.5.3.5 Refactoring
........2.3.5.3.6 Icon
........2.3.5.3.7 Icon2
........2.3.5.3.8 Kurzanleitung
........2.3.5.3.9 Architektur
........2.3.5.3.10 Anwendungsklasse
......2.3.5.4 Threads
......2.3.5.5 Activities
......2.3.5.6 Was_ist_wo
......2.3.5.7 Regelungssysteme
........2.3.5.7.1 Servo
........2.3.5.7.2 Fahrzeug
......2.3.5.8 ADB_Apps
......2.3.5.9 Veroeffentlichen
......2.3.5.10 Einzelheiten
........2.3.5.10.1 Bildschirmaufloesung
........2.3.5.10.2 Parameter
........2.3.5.10.3 Permission
........2.3.5.10.4 Latenzzeit
......2.3.5.11 Tonerkennung
........2.3.5.11.1 Wahrscheinlichkeitsrechnung
........2.3.5.11.2 Kovarianz_Scilab
........2.3.5.11.3 Java_Threads
........2.3.5.11.4 Java_Reflection
....2.3.6 Processing
......2.3.6.1 Installation
......2.3.6.2 Erste_Schritte
......2.3.6.3 Mechatronik
......2.3.6.4 Bibliotheken
......2.3.6.5 Uebung
......2.3.6.6 Snippets
........2.3.6.6.1 Dateioperationen
........2.3.6.6.2 Bilder
........2.3.6.6.3 GUI
........2.3.6.6.4 Text
........2.3.6.6.5 PDF
........2.3.6.6.8 Maus
........2.3.6.6.10 Zeit
........2.3.6.6.13 Animation
........2.3.6.6.15 Simulation
......2.3.6.7 Referenzen
....2.3.7 Android_Processing
......2.3.7.1 Basics
......2.3.7.2 Einrichten
......2.3.7.3 Crossplattform
......2.3.7.4 sinus
......2.3.7.5 sample
......2.3.7.6 analyse
......2.3.7.7 synthese
......2.3.7.8 Hilfsapps
......2.3.7.9 Eigene_Library
....2.3.8 Processing_VR
....2.3.9 Shapes3D
....2.3.10 TextToSpeech
....2.3.11 Internetprogrammierung
......2.3.11.1 Codegenerierung
......2.3.11.2 PHP_Programmierung
......2.3.11.3 PHP_OOP
......2.3.11.4 Java
......2.3.11.5 UDP
......2.3.11.6 Internetkontrolle
........2.3.11.6.1 Kamerabild
....2.3.12 OSC
......2.3.12.1 Datenaustausch
......2.3.12.2 i2audiolab
......2.3.12.3 Ardour
....2.3.13 Netzwerkprogrammierung
....2.3.14 JNI
....2.3.15 Erweitern
......2.3.15.1 sprich
......2.3.15.2 spiel
....2.3.16 thbvr
....2.3.17 Reflection
....2.3.18 Script
....2.3.19 Java3D
3 Echtzeitprogrammierung
..3.1 Echtzeit
..3.2 Korrektheit
..3.2 Semaphoren
..3.3 Hardware
..3.5 Synchronprogramm
..3.6 Zustandsmaschine
..3.7 Arduino
....3.7.1 Uebung
....3.7.2 RTOS
....3.7.3 Scheduler
....3.7.4 Semaphor
......3.7.4.1 Laufkatze
......3.7.4.2 Java
......3.7.4.3 Semaphor
....3.7.5 Messages
..3.8 Android
....3.8.2 Threads
......3.8.2.1 Java
......3.8.2.2 Synchronisierung
..3.9 Petrinetze
....3.9.1 Installation
....3.9.2 Test
4 KI
..4.1 Unueberwachtes_Lernen
..4.2 Agentensysteme
....4.2.1 Architekturen
......4.2.1.1 Verhalten
......4.2.1.2 Entwurfsmuster
....4.2.2 SUMO
......4.2.2.1 GettingStarted
......4.2.2.2 Antrieb
......4.2.2.3 Sensoren
......4.2.2.4 Zeitbasis
......4.2.2.5 Fernsteuerung
......4.2.2.6 Umsetzung_Fernst
......4.2.2.7 Fernsteuerung3
......4.2.2.10 Umsetzung
......4.2.2.11 Sockelsoftware
......4.2.2.12 Plan
......4.2.2.13 Lernen
........4.2.2.13.1 Parameter
........4.2.2.13.2 Identifikation
........4.2.2.13.3 Java
..4.3 Genetische_Algorithmen
....4.3.1 Heuristiken
....4.3.2 Genalgorithmus
..4.4 Kalmanfilter
....4.4.1 Vorarbeit
....4.4.2 Minimalversion
....4.4.3 Beispiel
5 Bildverarbeitung
..5.1 Gestalttheorie
..5.2 Bildverarbeitung
6 Technische_Systeme
..6.1 Kulturgeschichte
..6.2 Technikphilosophie
..6.3 Anthropozaen
7 Literatur
kramann.info
© Guido Kramann

Login: Passwort:




Umgang mit verschiedenen Bildschirmauflösungen

(EN google-translate)

(PL google-translate)

Lösung
  • 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.

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

Code 0-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 0-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 0-3: Zeichnen einer der Tonbandrollen relativ zu width und height (xraster und yraster).