Grafikprogrammierung
2D Objekte: Vektor- und Rastergrafik
Thorsten Thormählen
23. Oktober 2023
Teil 3, Kapitel 1
Thorsten Thormählen
23. Oktober 2023
Teil 3, Kapitel 1
Dies ist die Druck-Ansicht.
Weiterschalten der Folien durch die → Taste oder
durch das Klicken auf den rechten Folienrand.
Das Weiterschalten der Folien kann ebenfalls durch das Klicken auf den rechten bzw. linken Folienrand erfolgen.
Typ | Schriftart | Beispiele |
---|---|---|
Variablen (Skalare) | kursiv | $a, b, x, y$ |
Funktionen | aufrecht | $\mathrm{f}, \mathrm{g}(x), \mathrm{max}(x)$ |
Vektoren | fett, Elemente zeilenweise | $\mathbf{a}, \mathbf{b}= \begin{pmatrix}x\\y\end{pmatrix} = (x, y)^\top,$ $\mathbf{B}=(x, y, z)^\top$ |
Matrizen | Schreibmaschine | $\mathtt{A}, \mathtt{B}= \begin{bmatrix}a & b\\c & d\end{bmatrix}$ |
Mengen | kalligrafisch | $\mathcal{A}, B=\{a, b\}, b \in \mathcal{B}$ |
Zahlenbereiche, Koordinatenräume | doppelt gestrichen | $\mathbb{N}, \mathbb{Z}, \mathbb{R}^2, \mathbb{R}^3$ |
public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; // cast to Graphics2D g2d.draw(new Rectangle2D.Double(20.75, 45.0, 60.0, 30.00) ); g2d.fill(new Rectangle2D.Double(67.33, 60.0, 8.0, 15.00) ); g2d.fill(new Rectangle2D.Double(35.00, 55.0, 20.3, 11.00) ); GeneralPath triangle = new GeneralPath(); triangle.moveTo(10.75, 46.0); triangle.lineTo(90.75, 46.0); triangle.lineTo(50.75, 10.0); triangle.closePath(); g2d.fill(triangle); }
Vollständiger Quelltext:
House2D.java
Zum Erstellen von 2D-Vektorgrafiken gibt es zahlreiche freie und kommerzielle Programme:
Beliebte Dateiformate zum Speichern von 2D-Vektorgrafiken sind:
class RasterImage { protected int imageWidth; protected int imageHeight; protected int[] imageData; public RasterImage(int width, int height) { imageData = new int[width*height]; ... } public int getPixel(int x, int y) { return imageData[y*imageWidth+x]; } public void setPixel(int pixelValue, int x, int y) { imageData[y*imageWidth+x] = pixelValue; } ... };
template<typename T> class RasterImage { protected: unsigned imageWidth; unsigned imageHeight; T* imageData; public: RasterImage(unsigned width, unsigned height) { imageData = new T[width*height]; ... } const T getPixel(unsigned x, unsigned y) const { return imageData[y*imageWidth+x]; } void setPixel(T pixelValue, unsigned x, unsigned y) { imageData[y*imageWidth+x] = pixelValue; } ... };
MyPaintPanel extends JPanel { private BufferedImage img = null; public void createGUI() { try { img = ImageIO.read(new File("./horse.jpg")); } catch (IOException e) { System.out.println("failed to load image"); } ... } public void paint(Graphics g) { super.paint(g); Graphics2D g2d = (Graphics2D) g; int oldRgb = img.getRGB(10, 100); // read a pixel int rgb = 0xFFFF0000; // Alpha-Red-Green-Blue img.setRGB(10, 100, rgb); // draw red pixel g.drawImage(img, 0, 0, null); } }
Quelltext des Beispiels: MyBufferedImage.java
Es gibt zahlreiche freie und kommerzielle Bildbearbeitungsprogramme:
Beliebte Dateiformate für Rastergrafiken sind:
Anregungen oder Verbesserungsvorschläge können auch gerne per E-mail an mich gesendet werden: Kontakt