Freitag, 26. November 2004
Transparenz und Glättung für die Kreise
Im Kreiseditor werden die Kreise in dem Raster dargestellt, dass der Bildschirm bietet. Für die Kreise auf unseren Monitoren ist das Raster klar zu erkennen. Die Auflösung kann zwar nicht erhöht werden, aber der Übergang von "Kreis" zu "nicht Kreis" kann künstlich geglättet werden. Diese Technik wird Antialiasing genannt. Der Übergang wird quasi verwischt, was zu deutlich "runderen" Kreisen führt. In Java2D kann diese Glättung über eine Einstellung des grafischen Kontextes Graphics2D in der paint-Methode erreicht werden. Hierzu wird zunächst ein RenderingHints-Objekt erzeugt. ein RenderingHints-Objekt ist eine Map, d. h. eine Tabelle aus Schlüssel-Werte-Paaren. Die Schlüssel sind die möglichen Einstellungen für das Rendering (bspw. KEY_ANTIALIASING), und der dazugehörige Wert ist entweder VALUE_ANTIALIASING_ON oder VALUE_ANTIALIASING_OFF, alles sind Konstanten, die in der Klasse RenderingHints definiert sind. Ein RenderingHints-Objekt kann mit der Nachricht addRenderingHints an den grafischen Kontext als Einstellung übergeben werden. Ein RenderingHint versteht auch die Nachricht add(), falls mehrere Rendering-Einstellungen gesetzt werden sollen.

Graphics2D g2=(Graphics2D)...
RenderingHints hints=new
RenderingHints(RenderingHints.KEY_ANTIALIASING,Rendering
Hints.VALUE_ANTIALIAS_ON);
g2.addRenderingHints(hints);

Sollen die Kreise eine Transparenz aufweisen, d. h. sie sind durchscheinend, so ist dies über eine Einstellung des Composite-Objektes innerhalb des grafischen Kontextes zu erreichen. Das Composite-Objekt dient der Einstellung des Renderings, bei der Mischung der Farben verschiedener Objekte. Die Klasse, welche die Transparenz erzeugen kann ist ein spezielles Composite - ein AlphaComposite. Der Name stammt von dem Alpha-Wert, der die "Transparenz" von Pixeln angibt (0.0 -> unsichtbar, 1.0 -> undurchsichtig). AlphaComposite-Objekte implementieren alle Kompositionsregeln, die von T. Porter und T. Duff in "Compositing Digital Images" (SIGGRAPH 84, 253-259) veröffentlicht wurden.
Die Klasse AlphaComposite besitzt eine sog. Factory-Methode, die als statische Methode (also als Klassen-Methode) mit einem Objekt der Klasse antwortet. Die gemeinte Factory-Methode hat den Namen getInstance(...). Als Parameter wird die Kompositionsregel (hier SRC_OVER) und ein Alphawert übergeben. Ist der Alphawert kleiner als eins, so sind die gezeicheten Flächen ab sofort durchsichtig.

Graphics2D g2=(Graphics2D)...
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float)0.4));

... link (0 Kommentare)   ... comment


Samstag, 16. Oktober 2004
MVC des Kreiseditors
Das Kreiseditor-Projekt ist eine fortlaufende Übung über sechs Semester. Anhand dieser Übung werden auch Themen, wie Serialization, Streams, Thread-Programmierung, RMI, Datenbanken und Web-Applikationen untersucht. die im Rahmen der Ausbildung zum Assistenten für Elektronik und Datentechnik am Lette-Verein in Berlin gelehrt werden.
Zur Veranschaulichung des Modells, das dem Kreiseditor zu Grunde liegt, hier noch einmal das Klassendiagramm. Es zeigt deutlich die Einteilung in die drei Aufgabengebiete model, view, controller.

... link (1 Kommentar)   ... comment


Donnerstag, 7. Oktober 2004
Model-View-Controller (MVC Design Pattern)
Ich bin vor kurzem auf eine nette kleine Einführung zum Thema Model-View-Controller Konzept gestoßen, die ich euch nicht vorenthalten möchte. Vielleicht hilft sie dem einen oder anderen, der bisher im Dunkeln tappte, zu verstehen, was wir in der letzten Zeit im Praktikum mit unserem "Zeichenprogramm" angestellt haben.

Viel Spaß beim Lesen und schöne Ferien

-----------------------------------------------
Das Model-View-Controller-Konzept wird in vielen Bereichen moderner Softwareentwicklung eingesetzt und bedeutet die strikte Aufgabenverteilung bei einer Anwendung. So wird als Model die Datenquelle bezeichnet, die Daten unabhängig vom Erscheinungsbild liefert (also beispielsweise aus einer relationalen Datenbank). Die View zeigt diese Daten dann in passender Art und Weise an (z.B. als Tabelle in einer Java-Applikation) - bestimmt durch den »Look«. Wie diese View die Daten anzeigt wird nicht vom Model beeinflusst...

weiter gehts hier

... link (1 Kommentar)   ... comment