Colorpicker

Übersicht BlitzBasic Codearchiv

Neue Antwort erstellen

 

OJay

Betreff: Colorpicker

BeitragDi, Feb 10, 2004 21:08
Antworten mit Zitat
Benutzer-Profile anzeigen
wurde im chat gewünscht. von DC geschrieben. ist aber noch stark verbesserungswürdig (was den speed angeht)...aber das kann ja jeder selbst machen Smile

Code: [AUSKLAPPEN]
Graphics 320,240,32,2
AppTitle "Color Picker 1.0 ©by Unreal Software"

;----------------------------------------------------------Definieren
Global r         ;Rotwert
Global g         ;Grünwert
Global b         ;Blauwert
Global r2         ;Rotwert 2
Global g2         ;Grünwert 2
Global b2         ;Blauwert 2
Global x         ;Xpos
Global y         ;Ypos
Global colormap      ;Image für die Colormap
Global st         ;Color-Mix Step
Global li         ;Color-Line

Global l2         ;Color-Line to
Global br         ;Brightness
Global font         ;Schrift
Global ui_bw      ;Black/white (nur für Anzeige)
Global ui_bd      ;Brighter/Darker (nur für Anzeige)
Global ui_t$      ;Text (nur für Anzeige)
Global ui_tf      ;Textflip (nur für Anzeige)
Global math$      ;Berrechnungs-Integer
Global math2#      ;Berrechnungs-Float
Global mode         ;Mouse-Mode



;----------------------------------------------------------Einstellen
r=255            ;Rot am Anfang 255
g=0               ;Grün am Anfang 0
b=0               ;Blau am Anfang 0

x=10            ;Bei X 10 anfangen
y=10            ;Bei Y 10 anfangen

st=1            ;Color-Mix Step 1 (Grün größer)
li=0            ;Line auf 0
l2=0            ;Line to auf 0

font=LoadFont ("Arial", 14)


;----------------------------------------------------------Color Map erstellen
;Farbtöne zeichnen
For y=10 To 140
   For x=10 To 265
      Select st                              ;Horizontale Farbänderung
         Case 1 If g<255 Then g=g+5 Else st=st+1      ;1. Grün größer  / Next Step
         Case 2 If r>0 Then r=r-5 Else st=st+1      ;2. Rot kleiner  / Next Step
         Case 3 If b<255 Then b=b+5 Else st=st+1      ;3. Blau größer  / Next Step
         Case 4 If g>0 Then g=g-5 Else st=st+1      ;4. Grün kleiner / Next Step
         Case 5 If r<255 Then r=r+5 Else st=st+1       ;5. Rot größer   / Next Step
         Case 6 If b>0 Then b=b-5 Else st=st+1       ;6. Blau kleiner / Next Step
      End Select
      r2=r
      g2=g
      b2=b
      l2=0
      While l2<li                              ;Vertikale Farbänderung
         l2=l2+1                              ;
         If r2>127 Then r2=r2-1                  ;
         If r2<127 Then r2=r2+1                  ;
         If g2>127 Then g2=g2-1                  ;
         If g2<127 Then g2=g2+1                  ;
         If b2>127 Then b2=b2-1                  ;
         If b2<127 Then b2=b2+1                  ;
      Wend                                 ;
      Color r2,g2,b2
      Plot x,y                              ;Punkt zeichnen
   Next
   li=li+1                                    ;Nächste Reihe
   r=255                                    ;Rot auf 255
   g=0                                       ;Grün auf 0
   b=0                                       ;Blau auf 0
   st=1                                    ;Step zurücksetzen
Next
;Speichern
colormap=CreateImage(255,130)                     ;Leeres Image erstellen
GrabImage colormap,10,10                        ;Colormap in Image speichern


;----------------------------------------------------------Runtime vorbereiten
r=0
g=0
b=0
r2=0
g2=0
b2=0
rgb=0
br=0
SetFont font
SetBuffer BackBuffer()



;----------------------------------------------------------Runtime
Repeat
Cls

;Colormap zeichnen
DrawBlock colormap,10,10

;Infos schreiben
Color 255,255,255
Text 15, 145, "R: "+r
Text 15, 155, "G: "+g
Text 15, 165, "B: "+b
Text 15, 175, "Code: "+rgb
Text 185, 210, "Brightness: "+br+"%"

;Gewählte Farbe und anderes Zeugs schreiben
Color r,g,b
Rect 185,150,80,30
If ui_bd=0   Then ui_bw=ui_bw+5
If ui_bd=1   Then ui_bw=ui_bw-5
If ui_bw=0 Then
ui_bd=0
Select  ui_tf
Case 0  ui_t$="Welcome to"
Case 1  ui_t$="the Color Picker"
Case 2  ui_t$="©by Unreal Software, 2002"
Case 3  ui_t$=""
Case 5  ui_t$="Click into"
Case 6  ui_t$="the window"
Case 7  ui_t$="to select"
Case 8  ui_t$="a color!"
Case 9  ui_t$=""
Case 10 ui_t$="Use + or -"
Case 11 ui_t$="to make your"
Case 12 ui_t$="color brighter"
Case 13 ui_t$="or darker!"
Case 14  ui_t$=""
Case 15 ui_t$="Select a color,"
Case 16 ui_t$="press M and"
Case 17 ui_t$="select another color"
Case 18 ui_t$="to mix them!"
Case 19  ui_t$=""
Case 20 ui_t$="THX 4 using"
Case 21 ui_t$="this tool!"
Case 22 ui_t$="PLZ visit us @"
Case 23 ui_t$="www.unrealsoftware.de.vu"
Case 26  ui_t$=""
End Select
ui_tf=ui_tf+1
If ui_tf=30 Then ui_tf=0
EndIf
If ui_bw=255 Then ui_bd=1
Color ui_bw,ui_bw,ui_bw
Rect 185,150,80,30,0
Text 15, 210, ui_t$
If mode=1 Then Text MouseX()+30, MouseY(), "mix selected color with..."


;Mausklick
If GetMouse()<>0 Then
Select mode
;Mode 0: Farbe wählen
Case 0
   GetColor (MouseX(),MouseY())
   r=ColorRed()
   g=ColorGreen()
   b=ColorBlue()
   rgb=ReadPixel(MouseX(),MouseY())
   math2#=r+g+b
   math$=(math2#/765)*100
   br=math$
;Mode 1: Farben mixen
Case 1
   GetColor (MouseX(),MouseY())
   r2=ColorRed()
   g2=ColorGreen()
   b2=ColorBlue()
   r=(r/2)+(r2/2)
   g=(g/2)+(g2/2)
   b=(b/2)+(b2/2)
   math2#=r+g+b
   math$=(math2#/765)*100
   br=math$
   mode=0
   Color r,g,b
   Rect 185,150,80,30
   rgb=ReadPixel(200, 160)
End Select
EndIf

;Tasten
If KeyDown(1) Then End                           ;ESC = Beenden
If KeyDown(78) Or KeyDown(27) Then                  ;+ = Heller
   If r<255 Then r=r+1                           ;
   If g<255 Then g=g+1                           ;
   If b<255 Then b=b+1                           ;
   math2#=r+g+b:math$=(math2#/765)*100:br=math$      ;
   rgb=ReadPixel(200, 160)                        ;
EndIf                                       ;
If KeyDown(74) Or KeyDown(53) Then                  ;- = Dunkler
   If r>0 Then r=r-1                           ;
   If g>0 Then g=g-1                           ;
   If b>0 Then b=b-1                           ;
   math2#=r+g+b:math$=(math2#/765)*100:br=math$      ;
   rgb=ReadPixel(200, 160)                        ;
EndIf                                       ;
If KeyDown(50) Then mode=1                        ;M = Mode 1: Mix Mode

Flip
Forever

joKe

BeitragMi, Feb 11, 2004 11:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Was issn das was kann man damit machen ?
Eine kleine erklärung wäre nett =)

mfG j0k3
Projekt: Pollux Renegades Coop
[Maschine: Intel DualCore2 2x 3Ghz | 4096 DRR2 | GeForce GTX 260 Ultra]
 

mpz

BeitragMi, Feb 11, 2004 12:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Programm gefällt mir sehr gut. Anbei auch noch eine "Farbauswahl" mit der WINAPI programmiert, passt zu Deinem Beitrag Smile

Code: [AUSKLAPPEN]


; This Procedure is for free MPZ (@) from Berlin
; Version 0.1 1/2004
;
; in the USERLIBS must be the file kernel32.decls
;.lib "kernel32.dll"
;api_RtlMoveMemory(Destination*,Source,Length) : "RtlMoveMemory"

; in the USERLIBS must be the file comdlg32.decls
;.lib "comdlg32.dll"
;api_ChooseColor% (pChoosecolor*) : "ChooseColorA"
[/syntax]


[syntax="bb"]

Cls
Graphics 640,480,0,2

Print ChooseColor()

While MouseHit(1) <> 1
Wend

End

;--------------------------You can use it as BlitzLIB

Function ChooseColor()

CC_ANYCOLOR = $100
CC_FULLOPEN = $2   
CC_RGBINIT  = $1   

nextOffset%=0
theBank=CreateBank(36)

lStructSize=36
PokeInt theBank,nextOffset%,lStructSize
nextOffset%=nextOffset%+4
   
hwndOwner=0
PokeInt theBank,nextOffset%,hwndOwner
nextOffset%=nextOffset%+4

hInstance=0
PokeInt theBank,nextOffset%,hInstance
nextOffset%=nextOffset%+4
      
rgbResult=0
PokeInt theBank,nextOffset%,rgbResult
nextOffset%=nextOffset%+4

lpCustColors_ = CreateBank(64)
PokeInt theBank,nextOffset%,AddressOf(lpCustColors_)
nextOffset%=nextOffset%+4

flags=CC_ANYCOLOR Or CC_FULLOPEN Or CC_RGBINIT
PokeInt theBank,nextOffset%,flags
nextOffset%=nextOffset%+4

lCustData=0    
PokeInt theBank,nextOffset%,lCustData
nextOffset%=nextOffset%+4
   
lpfnHook=0    
PokeInt theBank,nextOffset%,lpfnHook
nextOffset%=nextOffset%+4

lpTemplateName$=""+Chr$(0)
lpTemplateName_ = CreateBank(Len(lpTemplateName$))
string_in_bank(lpTemplateName$,lpTemplateName_)
PokeInt theBank,nextOffset%,AddressOf(lpTemplateName_)
nextOffset%=nextOffset%+4
         
If api_ChooseColor%(thebank) Then
   Return PeekInt (thebank,16)
Else
   Return 0
EndIf    
FreeBank theBank
FreeBank lpTemplateName_
End Function

Function AddressOf(Bank) ; Find the correct Adress of a Bank (for C *Pointer)
   Local Address = CreateBank(4)
   api_RtlMoveMemory(Address,Bank+4,4)
   Return PeekInt(Address,0)
End Function

Function string_in_bank(s$,bankhandle) ; Put a String in a Bank
   Local pos=1
   Local pos2=0
   Repeat
      PokeByte(bankhandle,pos2,Asc(Mid(s$,pos,Len(s$))))
      pos=pos+1
      pos2=pos2+1
   Until pos=Len(s$)+1
End Function

Function bank_in_string$(bankhandle) ; Get a String from a Bank
   Local s$=""
   Local pos=0
   Repeat
      s$=s$+Chr(PeekByte(bankhandle,pos))
      pos=pos+1
   Until pos=BankSize(bankhandle)
   s$=Replace$(s$,Chr(0)," ")
   Return s$
End Function

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragMi, Feb 11, 2004 16:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Oha ein Code von mir Laughing

@j0k3:
Man kann eine Farbe auswählen und bekommt R G B und Colorcode für WritePixel(Fast) angezeigt. Außerdem kann man 2 Farben mischen und aufhellen oder abdunkeln
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com

joKe

BeitragMi, Feb 11, 2004 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Axo cool
also keine Include datei oder sowas die Hilft
sondern ein nützliches Programm für nebenbei um schnell die Information über eine bestimmte Farbe in RGB und im Colorcode zu bekommen ???
Projekt: Pollux Renegades Coop
[Maschine: Intel DualCore2 2x 3Ghz | 4096 DRR2 | GeForce GTX 260 Ultra]

DC

Sieger des B2D Retro Wettbewerb / Aug 04

BeitragMi, Feb 11, 2004 16:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Jop.. wobei das Ding schon älter ist und ich da noch nicht wusste das man ja auch einfach z.B. $FF0000 bei Writepixel nehmen kann - der doofe Colorcode war eigentlich der Hauptgrund das ich das gebastelt hab.. naja auch egal Wink
Core i5 4670K | 4 x 3,40 GHZ | 16 GB Ram | GeForce GTX 960 | HTC Vive | Win 10 Pro
www.UnrealSoftware.de | www.StrandedOnline.de | www.CS2D.com |
www.CarnageContest.com | www.Stranded3.com

Neue Antwort erstellen


Übersicht BlitzBasic Codearchiv

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group