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