fb:porticula NoPaste
Beispiel - Kuwait-Flagge zeichnen
Uploader: | Sebastian |
Datum/Zeit: | 22.09.2010 12:42:48 |
'
' Kuwait-Flagge mit Drawing Primitives zeichnen
' Zum Vergleich siehe z.B. http://de.wikipedia.org/wiki/Kuwait
' Die kleine "Schwierigkeit" besteht darin, dass die Flagge nicht nur aus Rechtecken besteht.
'
' Fuer FreeBASIC, getestet mit Version 0.21.1
'
' Lizenz: Public Domain, soweit das in Deutschland moeglich ist
'
Declare Sub ZeichneKuwaitFlagge (ByVal XPos As Integer, ByVal YPos As Integer, ByVal Breite As Integer, ByVal Hoehe As Integer)
ScreenRes 640,480,24
Line (0,0)-(640,480), &HE0E0E0, BF 'Zum Beispiel grauen Hintergrund zeichnen
ZeichneKuwaitFlagge 100,100, 280,102
' | | \ /
' \ / \ /
' \ / \ /
' \/ Groesse der Flagge: 280 Pixel breit, 102 Pixel hoch
' Position der oberen, linken Ecke der Flagge als X,Y-Koordinate
sleep
' ** Unterprogramm zum Zeichnen der Flagge **
' Position und Groesse der Grafik koennen vom Benutzer als Parameter festgelegt werden.
Sub ZeichneKuwaitFlagge (ByVal XPos As Integer, ByVal YPos As Integer, ByVal Breite As Integer, ByVal Hoehe As Integer)
Dim As Integer Streifenhoehe, XKoordinateRechts, XKoordinateSchwarz
If ((XPos < 0) OrElse (YPos < 0) OrElse (Breite < 4) OrElse (Hoehe < 3)) Then Exit Sub 'Ungueltige Parameterwerte
Streifenhoehe = Hoehe / 3
XKoordinateRechts = XPos + Breite - 1
'Zuerst die drei horizontalen Streifen zeichnen
Line (XPos,YPos)-(XKoordinateRechts,YPos+StreifenHoehe-1),RGB(0,122,61),BF 'Oberer Streifen (gruen)
Line (XPos,YPos+StreifenHoehe)-(XKoordinateRechts,YPos+2*StreifenHoehe-1),&HFFFFFF,BF 'Mittlerer Streifen (weiss)
Line (XPos,YPos+StreifenHoehe*2)-(XKoordinateRechts,YPos+3*StreifenHoehe-1),RGB(206,17,38),BF 'Unterer Streifen (rot)
'Jetzt den schwarzen Polygonzug links darueber zeichnen!
'Dafuer die X-Koordinate der rechten Ecken davon berechnen (25% der Breite)
XKoordinateSchwarz = XPos + Breite*0.25 - 1
'Den Rahmen des Polygons zeichnen (rechts):
Line (XPos,YPos)-(XKoordinateSchwarz,YPos+StreifenHoehe-1),0
Line (XKoordinateSchwarz,YPos+StreifenHoehe-1)-(XKoordinateSchwarz,YPos+2*StreifenHoehe-1),0
Line (XPos,YPos+3*StreifenHoehe-1)-(XKoordinateSchwarz,YPos+2*StreifenHoehe-1),0
'Linker Rand:
Line (XPos,YPos)-(XPos,YPos+3*Streifenhoehe-1),0
'Jetzt das Polygon schwarz uebermalen (PAINT)
Paint (XPos+1,YPos+1), 0, 0
' ^ ^
' | \
' | -- Umrandungsfarbe des Polygonzugs (=Fuellgrenze), auch schwarz. Haben wir vorhin ...
' \ ... mit LINEs gezeichnet.
' -- Fuellfarbe 0 = schwarz
End Sub