2.3  Beispiel 3: Ein Bitmap darstellen

In diesem Beispiel werden zwei Möglichkeiten gezeigt, ein Bitmap in einer Box darzustellen. Zum einen kann das Bitmap mit Hilfe der boxclass-Funktion ``showbmp(...)'' direkt gezeigt werden (beispiel3a.cpp), zum anderen kann es mit Hilfe der bitmap-Klasse und der Funktion ``load(...)'' eingelesen und dann gezeigt werden (beispiel3b.cpp). Der Vorteil der zweiten Variante ist, dass das Bitmap dann innerhalb des Programms auch manipuliert werden kann. Mit Hilfe der bitmap-Funktion ``save(...)'' kann ein Bitmap gespeichert werden. Die Bitmap-Klasse kann also unabhängig von einer Grafik-Darstellung dazu dienen, ein beliebiges Graustufenformat in ein Bitmap umzuwandeln.

Die beiden Beispielprogramme heißen ``beispiel3a.cpp'' und ``beispiel3b.cpp'' und liegen im Verzeichnis ``C:\grafik\winmagra\beispiel''.

// Programm "beispiel3a.cpp"
#include "winmagra.h"

void main()
{
  // wir brauchen eine Arbeitsflaeche vom Typ `desk' und
  // eine Box vom Typ `boxclass' auf dieser Arbeitsflaeche
desk surf;
boxclass bitbox(surf);
      // Auswahl des Ausgabegeraetes mit Namen "test3a"; hier: Bildschirm und Postscript File
    surf.open(SCREEN|EPS_FILE,"test3a");
      // die Box wird auf der Arbeitsflaeche positioniert und initalisiert,
      // mit einem Koordinatensystem versehen, und an den Achsen beschriftet
    bitbox.init(20,20,90,90,0.95,0.95);
    bitbox.dim(0,256,0,256,64,64);
    bitbox.label("width (mm)","height (mm)",.5);
      // das File "bild.bmp" wird eingelesen, und das Bitmap in der Box dargestellt
    bitbox.showbmp(0,0,256,256,"bild");
}

Die Ausgabe des Programms sieht so aus:                 test3a.gif

// Programm "beispiel3b.cpp"
#include "winmagra.h"

void main()
{
  // wir brauchen ein Objekt vom Typ `bitmap' mit der richtigen Groesse zum Aufnehmen des Bitmaps
  // dieser Aufruf muss vor dem Aufruf der Grafikobjekte stattfinden!!
bitmap bmp(256,256);
  // wir brauchen eine Arbeitsflaeche vom Typ `desk' und
  // eine Box vom Typ `boxclass' auf dieser Arbeitsflaeche
desk surf;
boxclass bitbox(surf);
      // Auswahl des Ausgabegeraetes mit Namen "test3b"; hier: Bildschirm und Postscript File
    surf.open(SCREEN|EPS_FILE,"test3b");
      // die Box wird auf der Arbeitsflaeche positioniert und initalisiert (hier: Ticks
      // nach aussen), mit einem Koordinatensystem versehen, und an den Achsen beschriftet
    bitbox.init(20,20,90,90);
    bitbox.dim(0,256,0,256,64,64,1,boxclass::OUTTICKS);
    bitbox.label("width (mm)","height (mm)",.5);
      // das File "bild.bmp" wird geladen, und das Bitmap auf der Arbeitsflaeche dargestellt
      // hier muessen desk-Koordinaten verwendet werden, da putbmp eine Funktion der desk-Klasse ist!
    bmp.load("bild");
    surf.putbmp(20,20,90,90,bmp);
}

Die Ausgabe des Programms sieht so aus:                 test3b.gif


File translated from TEX by TTH, version 3.06.
On 31 Mar 2004, 17:45.