Einen habe ich noch, Freunde des Profanen!
Bekanntlich unterscheiden sich die Farbdarstellung in der Technik (Rot-Grün-Blau) und die menschliche (Rot-Blau-Gelb). Darum habe ich ein Profan-Programm erstellt um einen 12teiligen Farbkreis anzuzeigen:
' 12teiligerfarbkreis.xprf
' Die Farbwerte wurden mit der Pipette von der besten Darstellung
' des Farbkreises aufgenommen, die ich finden konnte.
Declare Farbkreis#[11]
Struct SFarbkreis = Name$(14), r%, g%, b%
Dim Farbkreis#[], SFarbkreis
Farbkreis#[0].Name$ = " Rot"
Farbkreis#[0].r% = 227
Farbkreis#[0].g% = 35
Farbkreis#[0].b% = 34
Farbkreis#[1].Name$ = " Rotorange"
Farbkreis#[1].r% = 239
Farbkreis#[1].g% = 98
Farbkreis#[1].b% = 31
Farbkreis#[2].Name$ = " Orange"
Farbkreis#[2].r% = 241
Farbkreis#[2].g% = 142
Farbkreis#[2].b% = 28
Farbkreis#[3].Name$ = "Gelborange"
Farbkreis#[3].r% = 253
Farbkreis#[3].g% = 198
Farbkreis#[3].b% = 11
Farbkreis#[4].Name$ = " Gelb"
Farbkreis#[4].r% = 244
Farbkreis#[4].g% = 229
Farbkreis#[4].b% = 0
Farbkreis#[5].Name$ = " Grüngelb"
Farbkreis#[5].r% = 122
Farbkreis#[5].g% = 187
Farbkreis#[5].b% = 38
Farbkreis#[6].Name$ = " Grün"
Farbkreis#[6].r% = 0
Farbkreis#[6].g% = 142
Farbkreis#[6].b% = 91
Farbkreis#[7].Name$ = " Blaugrün"
Farbkreis#[7].r% = 21
Farbkreis#[7].g% = 128
Farbkreis#[7].b% = 133
Farbkreis#[8].Name$ = " Blau"
Farbkreis#[8].r% = 42
Farbkreis#[8].g% = 113
Farbkreis#[8].b% = 176
Farbkreis#[9].Name$ = "Blauviolett"
Farbkreis#[9].r% = 68
Farbkreis#[9].g% = 78
Farbkreis#[9].b% = 153
Farbkreis#[10].Name$ = " Violett"
Farbkreis#[10].r% = 109
Farbkreis#[10].g% = 57
Farbkreis#[10].b% = 139
Farbkreis#[11].Name$ = "Rotviolett"
Farbkreis#[11].r% = 196
Farbkreis#[11].g% = 3
Farbkreis#[11].b% = 125
WindowStyle 31
WindowTitle "12teiliger Farbkreis"
Window 900, 900
Declare Grad!, CenterX%, CenterY%, Winkel!, Anfang%, Offset%
Declare x1%,y1%,x2%,y2%,x3%,y3%,x4%,y4%,z%,D!
D! = 2*3.14159265/360
Offset% = 24
Proc GSin
Parameters winkel!
Return -Sin((winkel!+90)* D!)
EndProc
Proc GCos
Parameters winkel!
Return -Cos((winkel!+90)* D!)
EndProc
Proc Circle
Parameters X%,Y%,R%
Ellipse (X% - R%),(Y% - R%) - (X% + R%),(Y% + R%)
EndProc
Proc Diagram
Parameters Anfang%
UsePen 0,1,0
UseBrush 0,0
TextColor 0, -1
CenterX% = (%WinRight - %WinLeft)/2
CenterY% = (%WinBottom - %WinTop - 60)/2
Circle(CenterX%,CenterY%,380)
Clear z% : grad! = 0 + Anfang% ' Felder
While z% < 6
x1%=CenterX%+GSin(Grad!)*380
y1%=CenterY%+GCos(Grad!)*380
x2%=CenterX%+GSin(Grad! +180)*380
y2%=CenterY%+GCos(Grad! +180)*380
Line x1%,y1% - x2%,y2%
Grad! = Grad! + 30
If Grad! > 360 : Grad! = Grad! - 360
EndIf : z% =z% + 1
EndWhile
Clear z% : grad! = 0 + Anfang%
While z% < 12
x3%=CenterX%+GSin(Grad!+Offset%)*370
y3%=CenterY%+GCos(Grad!+Offset%)*370
x4%=CenterX%+GSin(Grad!+Offset%)*430
y4%=CenterY%+GCos(Grad!+Offset%)*430
With Farbkreis#[z%]
UseBrush 1, @RGB(.r%, .g%, .b%)
Fill X3% +1, Y3% +1, @RGB(0, 0, 0)
Orientation (grad! + 105) * 10 ' Winkel
UseFont "Lotus Regular", 40,20, 0, 0, 0, 0
DrawText x4%,y4%,.Name$ ' Namen
EndWith
Grad!=Grad!+30
If Grad! > 360 : Grad! = Grad! -360 : EndIf
z% = z% + 1
EndWhile
UseBrush 0,0
' Circle(CenterX%,CenterY%,320)
' Circle(CenterX%,CenterY%,260)
' Circle(CenterX%,CenterY%,200)
' Circle(CenterX%,CenterY%,140)
' Circle(CenterX%,CenterY%,80)
EndProc
Diagram(345)
Waitkey
End
Alles anzeigen
Dieses Bild habe ich dann in Paint.net weiterbearbeitet:
[Blockierte Grafik: http://fs5.directupload.net/images/161004/slx88am5.gif]
Ich will nicht behaupten, diese Darstellung könnte man mit X3 nicht erzielen. Doch man müsste alle Farbwerte einzeln eingeben. Bei Paint.net habe ich konzentrische Kreise über das Bild gelegt und aussen zwei transparente schwarze Ringe darübergelegt. Innen drei transparente weiße Kreise.
Das wäre eine weitere Anregung, was bei Profan noch fehlt: Ein Alphakanal oder RGBA-Modus wie bei Allegro, FreeBasic, PureBasic etc. So kann man besonders die sogenannten Weißausmischungen leichter herstellen.