Bedienungsanleitung

Viruswarnung

Die Datei enthält Makros, die eine WMF erzeugen oder einlesen können. Der Browser kann meckern, dass die Datei möglicherweise Viren enthalten können. Beim Öffnen wird auch vor eventuell schädlichem Code gewarnt. Mit VBA kann man tatsächlich auch Viren schreiben. Z.B. gab es mal eine Exceltabelle, die hat seinen Code beim Speichern in die letzten 4 geöffneten Tabellen geschrieben und in jeder Zelle den Wert mit einer einprozentigen Wahrscheinlichkeit um 5% erhöht oder verringert.

Solltest du misstrausch sein, dann gibt es diese Möglichkeiten:

Makros deaktivieren klicken und sich mit ALT F11 den Code durchlesen, ob dieser was schlimmes macht. Wirst du nach einem Passwort gefragt, damit du den Code lesen kannst, dann ist da möglicherweise ein Virus drin.

Aber der sichtbare Nutzcode kann doch von dem Virus ablenken? Woher weiß ich denn, dass da im Hintergrund nicht doch ein passwortgeschützes Geheimnis versteckt ist, dass heimlich eine unsichtbare Email an WoT-WMF mit den letzten geöffneten Worddokumenten schickt?

Abhilfe schafft da folgender Lösungsweg: Man kopiert den sichtbaren Code in eine Textdatei und speichert die Datei als XLSX. Im Dateiformat XLSX können keine Makros gespeichert werden. Excel schließen und die XLSX öffnen. Beim WMFzerleger steht in Zeile O25 #NAME?, weil die Makros fehlen. Dann drückt man ALT F11 und kopiert die Makros aus der Textdatei rein und speichert als XLSB oder XLSM. Nun sollte die Exceltabelle wieder funxionieren - Tabellen mit Geheimnis würden hingegen fehlerhaft arbeiten. Die Tastenkürzel STRG+L und STRG+J müssen nachträglich wieder zugewiesen werden.

Außerdem immer schön das Internetkabel ziehen. Meckert Excel, dass das Internet nicht geht, dann die Datei sofort in den Müll werfen.

 

WMFzerleger
Die Bedienungsanleitung ist auch in der Exceldatei mit drin. WMF-Balken hat eine straffere Hilfe zum WMFzerleger
WMFzerleger.xlsb
xlsb Datei [432.3 KB]

 

Mit dieser Exceltabelle ist es möglich WMF-Dateien auf Byteebene zu bearbeiten    
Die Exceldatei ist in mehrere Blätter unterteilt, die folgende Funxion haben    
    WMF: WMF Datei zusammensetzten oder einlesen
    WMF2: WMF Datei einlesen oder zusammensetzen. WMF2 kann mit WMF verglichen werden
    Bedienungsanleitung:
    Dateien: Sehr viele Beispieldatein aus der Kampfkrafttheorie. Hier kann nachvollzogen werden, wie eine WMF funxioniert
    WMFobjekte: Hier steht drin, wie man welches Byte zu füllen hat
    3Ddiagramm: Hier kann man anhand von Zahlen ein 3D-Diagramm erstellen
    EMF: EMF-Dateien einlesen. EMF zusammensetzen habe ich noch nicht programmiert, da ich EMF nicht so schön finde
    EMFobjekte: Eine Liste der EMF-Objekte laut Dateispezifikation
Die EMF-Tabellen werden für die Bedienung nicht benötigt.   
    
WMF-Grundwissen    
    Eine WMF-datei besteht auf einen Preader, dann einen Header und danach einem Hauptteil
    Der Preader beschreibt, in welcher Größe die WMF erscheint und beginnt mit dem Schlüssel: 52695;39622
    Der Header beinhaltet Informationen zur Datei
    Der Hauptteil besteht aus WMFobjekte
    Header und Preader sind 42 Byte groß. Auf dem Preader kann verzichtet werden
    Ein Objekt wird in der Dateispezifikation Rekord genannt. Rekord und Objekt sind Wörter für das selbe
    Ein Objekt besteht aus 4 Byte für die Objektlänge, dann 2 Byte für den Objekttyp und der Rest beschreibt den Inhalt
    
WMF-Darstellung in dieser Exceltabelle    
Der Preader    
    Der Preader wird in Zeile 25 dargestellt und beginnt in Spalte E

was man eintragen muss

52695

39622

0

0Re

0ch

te X

ck Y

Inch 96(1=1Pixel)

0

0

Checksumme

Beispiel

52695

39622

0

0

0

1300

1024

1920

0

0

20869

    Jede Zelle in Excel beinhaltet ein Doppelbyte
    Die Zellen werden von links nach rechts gelesen
    Die WMF-datei beginnt mit dem Preader und das erste Doppelbyte der Datei ist ein Teil des Schlüssels. Der Wert muss 52695 sein.
    Die Zelle rechts davon setzt den Schlüssel fort 39622
    Dann kommt eine 0
    Die nächsten 4 Doppelbyte beschreiben den Bereich der WMF, der angezeigt werden soll. Dies sind die Koordinaten eines Rechteckes.
    Da der Ausschnitt im Koordinatenursprung beginnen soll, sind die ersten beiden Werte 0.
    Die anderen beiden Werte sind die X- und Y-koordinate, die den Ausschnitt festlegen.
    Natürlich kann man die weißen Ränder einer Grafik auch in Word abschneiden. Aber wenn was fehlt, dann muss man es hier machen.
    Das achte Doppelbyte ist sehr wichtig. Es beschreibt, wie groß der Inhalt angezeigt wird. Je größer der Wert, desto kleiner ist die Anzeige.
    Dabei bedeutet 96, dass eine Einheit ein Pixel groß ist.
    Eine Linie, die 4000 lang ist, wird beim Wert 96 genau 4000 Pixel lang sein. Zoomt man in Word, bleibt die Linie natürlich weiterhin glatt.
    Da der Bildschirm meist keine 4000 Pixel hat, sollte man die Grafik verkleinern. Nimmt man den Wert 960, dann wird die Linie nur noch 400 Pixel groß angezeigt.
    Natürlich kann man die Grafik auch in Word vergrößern und verkleinern. Bei zu winzigen und zu riesigen Skalierfaktoren wird Word allerdings zickig.
    Das neunte und zehnte Doppelbyte ist 0
    Das letzte Doppelbyte des Preaders ist eine Checksumme. Diese muss stimmen, sonst funxioniert der Preader nicht.
    Ändert man die Koordinaten des Anzeigerechtecks, so ändert sich die Checksumme. In dieser Zelle muss also die Formel drinstehen.
    
Der Header    
    Im Header steht, wie groß die Datei ist, wieviele Objekte dadrin sind und wie lang das länste ist.
    Ist der Header falsch, so weigern sich einige Programme wie z.B. Irfanview, die Datei an zu zeigen
    Word zeigt korrupte WMF-datein ohne irgendwelches Meckern an.
    Der Header wird in der Exceltabelle nicht angezeigt. Der wird vom Makro automatisch korrekt berechnet.
    Um den Header braucht man sich nicht zu kümmern
    
Die Objekte    
    Obwohl zwischen Hauptteil und Preader noch der Header liegt, geht es in der nächsten Zeile schon mit dem Inhalt los.
    Der Inhalt startet ab Zeile 26
    Jede Zeile beinhaltet ein Objekt
    Die Zeile wird von links nach rechts gelesen.
    In Spalte D befindet sich die Objektlänge
    In Spalte E befindet sich der Objekttyp. Objekttyp heißt in der Dateispezifikation "recordfunction"
    Jede Zelle beinhaltet 2 Byte
    Aber die Objektlänge wird doch mit 4 Byte angegeben. Wo befinden sich zwischen Spalte D und E die restlichen 2 Byte?
    Die fehlenden 2 Byte sind 0 und werden vom Makro ergänzt. Die Tabelle bleibt eine Spalte voller Nullen erspart. Ich bin davon ausgegangen, dass niemals ein Mensch ein Objekt mit mehr als 65536 Byte manuell erstellen wird.
    In Spalte E wird die Zahl des Objektes eingetragen. 1313 bedeutet, dass dieses Objekt einen Text darstellt.
    Da es so schwer ist, sich die ganzen Zahlen für die Objekte zu merken, ist es auch Möglich, dass man den Name des Objektes dort einträgt.
    Das Makro wandelt den Name in die passende Zahl um. Polylinie bedeutet also 805.
    Ab Spalte F beginnen die Objektinhalte
    Beim WMF-Koordinatensystem geht die X-Axe nach rechts und die Y-Axe nach UNTEN!
    Ist eine Zelle in Spalte D leer, dann bedeutet dies das Dateiende
    Eine WMF-Datei muss ein Textobjekt enthalten, da sonst Excel sich weigert sie korrekt zu lesen
    
Beispiel Polylinie    
    Eine dicke Polylinie soll von (3;8) nach (20;50) gezeichnet werden.
    Man schaut in das Blatt WMFobjekte.
    Dort gibt es das Objekt Polylinie
    Man sieht 7 Zellen, in denen was steht.
    In Spalte E steht Polylinie, denn eine Polylinie soll ja auch gezeichnet werden.
    Die Spalte D bedeutet die Objektlänge und da steht #WERT! drin.
    Excel berechnet die korrekte Objektlänge, denn die Objektlänge ist bei Polylinien von der Anzahl der Punkte abhängig.
    In Spalte F wird die Anzahl der Punkte verlangt. Bei dieser Polylinie sind es 2 Punkte.
    Die Zellen rechts davon beschreiben, welche Koordinaten man einsetzen muss. Jeweils 2 Zellen sind immer ein Punkt.
    Achtung: Genau hinkucken! Bei der Polylinie muss zuerst die X-Koordinate des Punktes eingesetzt werden, dann die Y-Koordinate. Beim Text ist dies umgekehrt!
    Die Linie sieht dann so aus

#WERT!

Polylinie

Anzahl der Punkte

x

y

x

y

8

Polylinie

2

3

8

20

50

    Aber die Polylinie ist ja garnicht dick!
    
Beispiel Text    
    Ein Text "Hello World" soll geschrieben werden. Er soll an der Stelle (40,80) und 90° gedreht sein
    Man schaut in das Blatt WMFobjekte.
    Dort gibt es das Objekt Text
    Spalte D ist wie immer die Objektlänge und Spalte E der Objekttyp
    Spalte F beinhaltet die Länge des Textes und wird automatisch berechnet
    Die Objektlänge in Spalte D ist von der Länge des Textes abhängig. Man muss hier nichts manuell berechnen
    Achtung: Hat man eine WMF Datei eingelesen, dann stehen hier keine Formeln hinter. Wird der Text geändert, aber die Textlänge und Objektlänge nicht neu berechnet, dann crasht die WMF-Datei.
    Zeile G hat eine Besonderteit. Hier wird keine Zahl eingetragen. Es wäre furchbar, wenn man den Text, den man Tippen will, erst mühevoll in mehrere Doppelbytes umrechnen muss.
    Deshalb wird speziell für das Textobjekt in Spalte G der Text eingetragen, den man haben will - und keine Zahlenfolge.
    Danach werden die Koordinaten des Textes eingegeben
    Achtung: Genau hinkucken! Bei dem Text muss zuerst die Y-Koordinate des Punktes eingesetzt werden, dann die X-Koordinate.
    Der Text sieht dann so aus

8

Text

4

Text

Y

X

12

Text

11

Hello World

80

40

    Aber der Text ist ja garnicht um 90° gedreht!
    
Beispiel Kreis    
    Ein roter Kreis soll gezeichnet werden. Er soll an den Punkt (20;20) und hat einen Radius von 10
    Dazu holt man sich den Kreis aud dem Blatt WMFobjekte
    Es gibt eine Ellipse. Sie wird durch das umschließende Rechteck beschrieben.
    Man stellt sich die Ellipse also wie ein Rechteck vor und tippt die Koordinaten eines Rechtecks ein.
    Leider kann man die Wunschwerte des Kreises nicht direkt eintragen. Man muss also rechnen.
    Die Ellipse beginnt bei x=10 und endet bei x=30. Und sie beginnt bei y=10 und endet bei y=30.
    Große Y-Koordinaten sind unten und nicht oben
    Deshalb trägt man folgendes ein

7

Ellipse

Y untenrechts

X untenrechts

Y obenlinks

X obenlinks

7

Ellipse

30

10

10

30

    Aber der Kreis ist ja garnicht rot.
    
WMF Malobjekte    
    Für dicke Polylinien, gedrehte Texte und rote Kreise benötigt man Eigenschaften
    Eine dicke Linie wird mit einem dicken Füller gezeichnet.
    Ein Text wird schräg, wenn man die Schreibmaschine dreht.
    Und einen Kreis malt man mit einem roten Pinsel aus.
    So einfach ist das.
    Die dafür benötigten WMF-Malobjekte heißen Füller, Font und Pinsel. Es gibt 3 Objekte, mit denen gemalt wird.

8

Füller

Füllerstil

Dicke

0

Farbe

Farbe

 

 

 

 

 

28

Font

Höhe

0

0

Winkel in

Zehntelgrad

Breite 400=Normal

700=Fett

0

0

0

0

Schriftart(32String)

7

Pinsel

Stil=0

Farbe

Farbe

 

 

 

 

 

 

 

    Und so werden die Objekte korrekt erstellt
    
Der Füller    
    Der Füller hat eine Farbe und eine Dicke. Außerdem hat er einen Stil
    Beim Stil bedeutet, dass er bei 0 durchgeht und bei 5 unsichtbar ist.

8

Füller

0

2

0

0

0

    Dieser dargestellte Füller zeichnet eine schwarze Linie der Dicke 2.

8

Füller

5

10

0

255

0

    Und dieser Füller zeichnet eine rote Linie der Dicke 10 und ist unsichtbar.
    Unsichtbar macht Sinn, wenn man einen roten Kreis will, der nicht schwarz umrandet ist.
    Die Farbe wird durch 2 Doppelbyte beschrieben und zwar nach dem RGB-Modell
    Zuerst kommt Rot, dann Grün, dann Blau und zuletzt noch eine 0
Farben:

rot

255

0

gelb

65535

0

grün

65280

0

cyan

65280

255

blau

0

255

magenta

255

255

schwarz

0

0

weiß

-1

255

    Bei Zahlen größer als 32768 darf der Wert um 65536 vermindert werden. -1= 65535
    
Der Pinsel    
    Der Pinsel hat eine Farbe und kann auch unsichtbar sein.
    Unsichtbar macht Sinn, wenn man ein durchsichtiges schwarz umrandetes Rechteck zeichnen will.

7

Pinsel

0

0

255

    Dieser Pinsel ist blau
    
Der Font    
    Im Font kann man sehr viel einstellen. Das Unwichtige wird erstmal auf 0 gesetzt, weil man das nicht braucht.
    Wichtig ist die Schriftgröße, die Textdrehung und die Schriftart.
    Die Textdrehung wird in Zehntel Grad angegeben und ein rechter Winkel hat also 900.

28

Font

Höhe

0

0

Winkel in Zehntelgrad

400

0

0

0

0

Schriftart(32String)

28

Font

12

0

0

1800

400

0

0

0

0

Times New Roman

    Diese Schreibmaschine schreibt die Schriftart "Times New Roman" auf dem Kopf in der Schriftgröße 12
    Wichtig für Texte: Es sind nur ASCII-Zeichen erlaubt. Ä,Ö,Ü, ß sind erlaubt, griechische Buchstaben nicht!
    Für griechische Buchstaben muss man einen Font nehmen, der griechische Buchstaben hat. Z.B. Symbol
    
WMF Malobjekte benutzen    
    Es reicht nicht, wenn man einen Pinsel und einen Füller hat. Man muss ihn erst in die Hand nehmen, um damit zu malen.
    Ein Objekt nimmt man in die Hand, indem man das Objekt wählt.

4

ObjektWählen

Objektnummer

    Man kann nur Malobjekte wie Füller, Pinsel oder Font in die Hand nehmen. Mit einem Rechteck kann man nicht malen.
    Etwas kompliziert wird es bei der Objektnummer
    Das erste Malobjekt, das erstellt wird, bekommt die Nummer 0.
    Jedes weitere Objekt füllt den nächsten freien Platz.
    Erstellt man einen Pinsel, dann noch einen und dann einen Füller,
    dann haben die beiden Pinsel die Nummer 0 und 1 und der Füller liegt auf dem zweiten Platz.
    In der WMF-Hand kann ein Füller, ein Pinsel und ein Font genommen werden.
    Wird ein neuer Füller in die Hand genommen, so wird der alte Füller bei Seite gelegt. Man kann ihn später wieder aufheben.
    Malobjekte, die man nicht mehr braucht, kann man auch löschen. Doch irgendwie macht dies überhaupt keinen Sinn.
    
Beispiel zum Malobjekte nutzen    
    Es soll ein rot umranderer gelber Kreis schwarz durchgestrichen werden.
    Bevor man den Kreis und die Linie zeichnet, braucht man erst die richtigen Hilfsmittel.
    Dazu erstellt man einen roten Füller. Dieser liegt auf Platz 0
    Dann erstellt man einen schwarzen Füller. Dieser liegt auf Platz 1
    Zuletzt erstellt man einen gelben Pinsel. Dieser liegt auf Platz 2
    Jetzt soll der Kreis gezeichnet werden. Dazu braucht man den roten Füller und den gelben Pinsel

4

ObjektWählen

0

4

ObjektWählen

2

    Der Kreis wird gemalt. Für die schwarze Linie braucht man den schwarzen Füller.

4

ObjektWählen

1

    Das Malobjekt 1 ist nun anstelle des Malobjektes 0 aktiv.
    
Zusätzliche Objekte    
    In der Exceltabelle habe ich zusätzliche Objekte eingeführt, die es in der WMF-Datei nicht gibt.

18

Pfeil

Pfeilgröße

x

y

x

y

 

 

 

 

 

 

 

 

44

Maßkette

Pfeilgröße

x

y

x

y

 

 

 

 

 

 

 

 

64

BiMaßkette

Pfeilgröße

x

y

x

y

x

y

 

 

 

 

 

 

 

Diagramm

Pfeilgröße

x

y

x

y

X

Text

Y

Text

Farbe

0= farblos

X Teilungen

Y Teilungen

Anzahl

der Punkte

X Werte-

array

X Werte-

array

 

 

 

 

 

 

 

 

 

 

 

 

 

Y Werte-

array

Y Werte-

array

    Diese Objekte werden in der Kampfkraftteorie exzessiv verwendet.
    Diese Objekte sind Pfeile, Maßketten und Diagramme.
    Der Pfeil besteht aus einem Dreieck als Pfeilspitze und einer Linie.
    Die Maßkette besteht aus einem 3 Linien und 2 Dreiecke, aber beinhaltet noch keinen Text.
    Die Bimaßkette ist wie 2 Maßketten, nur dass diese 24 Doppelbytes sparsamer ist.
    Das Diagramm besteht aus sehr vielen Objekten, die ein Diagramm ergeben.
    Mit Nichts wird die Zeile einfach übersprungen. Dies macht Sinn, wenn man mit einer Wennformel bestimmte Teile ausblenden will.
    
Beispieldatei

 

52695

39622

0

0

0

12000

3300

1920

0

0

29333

 

 

 

 

28

Font

360

0

0

0

400

0

0

0

0

Times New Roman

 

 

 

 

5

Textabdecken

1

0

 

 

 

 

 

 

 

 

 

 

 

 

8

Füller

0

16

0

0

0

 

 

 

 

 

 

 

 

 

7

Pinsel

0

49407

192

0

 

 

 

 

 

 

 

 

 

 

7

Pinsel

0

0

0

0

 

 

 

 

 

 

 

 

 

 

4

ObjektWählen

0

 

 

 

 

 

 

 

 

 

 

 

 

 

4

ObjektWählen

1

 

 

 

 

 

 

 

 

 

 

 

 

 

4

ObjektWählen

3

 

 

 

 

 

 

 

 

 

 

 

 

 

7

Text

2

K1

0

500

 

 

 

 

 

 

 

 

 

 

7

Text

2

K2

0

6700

 

 

 

 

 

 

 

 

 

 

 

Diagramm

200

500

2750

5000

1000

Lu

A  K=25200 al

2

4

5

3

0

0

360

7

Pinsel

0

49344

255

0

 

 

 

 

 

 

 

0

70

70

4

ObjektWählen

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Diagramm

200

6700

2750

10970

800

Lu

A  K=26644,8 al

4

4

5

3

0

0

341,6

 

 

 

 

 

 

 

 

 

 

 

 

 

0

78

78

    Und so funxioniert die Datei:
    Zuerst wird mit dem Preader gestartet. Schlüssel, Ansichtsfenster, Skalierung und Checksumme werden korrekt eingegeben.
    Dann wird ein Font erstellt.
    Danach wird das Textabdecken festgelegt. Die 1 bedeutet, dass Texte nicht abdecken.
    Es wird ein schwarzer 16 dicker Füller definiert.
    Danach kommt ein hellroter Pinsel und dann noch ein schwarzer Pinsel
    Nun werden Objekt 0, 1 und 3 in die Hand genommen. Dies sind der Font, der schwarze Füller und der schwarze Pinsel.
    Dann werden 2 Texte ganz oben hingeschrieben.
    Nun wird ein KKT-Diagramm gezeichnet. Die Werte wurden korrekt eingetragen, sodass das Makro ein Diagramm erstellt.
    Ein hellgrüner Pinsel wird erstellt.
    Der schwarze Pinsel wird in die Hand genommen, weil im Diagramm der Pinsel gewexelt wurde.
    Ein weiteres Diagramm wird gezeichnet. Da wird dann der hellgrüne Pinsel benutzt.
    
Tastenkürzel    
    Strg+j ließt eine WMF ein
    Strg+L erzeugt eine WMF

 

 

 

 

Druckversion | Sitemap
cc-by-sa; Simon Pie