Code: Select all
Procedure mkPaleta(ww.i,hh.i)
Protected.d w,h,d
Protected.a p,yy
w=ww/32
h=hh/8
img= CreateImage(#PB_Any,ww,hh)
StartDrawing(ImageOutput(img))
;rojo
yy=0
For p=0 To 15
Box(p*w,h*yy,w+1,h+1, RGB(p*16,0,0))
Next p
For p=0 To 15
Box((p+16)*w,h*yy,w+1,h+1, RGB(255,p*16,p*16))
Next p
;naranja
yy=1
For p=0 To 15
Box(p*w,h*yy,w+1,h+1, RGB(p*16,(p*16)/2,0))
Next p
For p=0 To 15
Box((p+16)*w,h*yy,w+1,h+1, RGB(255,127+((p*16)/2),(p*16)/2))
Next p
;amarillo
yy=2
For p=0 To 15
Box(p*w,h*yy,w+1,h+1, RGB(p*16,p*16,0))
Next p
For p=0 To 15
Box((p+16)*w,h*yy,w+1,h+1, RGB(255,255,p*16))
Next p
;verde
yy=3
For p=0 To 15
Box(p*w,h*yy,w+1,h+1, RGB(0,p*16,0))
Next p
For p=0 To 15
Box((p+16)*w,h*yy,w+1,h+1, RGB(p*16,255,p*16))
Next p
;celeste
yy=4
For p=0 To 15
Box(p*w,h*yy,w+1,h+1, RGB(0,(p*16)/2,p*16))
Next p
For p=0 To 15
Box((p+16)*w,h*yy,w+1,h+1, RGB((p*16)/2,127+((p*16)/2),255) )
Next p
;azul
yy=5
For p=0 To 15
Box(p*w,h*yy,w+1,h+1, RGB(0,0,p*16))
Next p
For p=0 To 15
Box((p+16)*w,h*yy,w+1,h+1, RGB(p*16,p*16,255))
Next p
;lila
yy=6
For p=0 To 15
Box(p*w,h*yy,w+1,h+1, RGB(p*16,0,p*16))
Next p
For p=0 To 15
Box((p+16)*w,h*yy,w+1,h+1, RGB(255,p*16,255))
Next p
;gris
yy=7
For p=0 To 15
Box(p*w,h*yy,w+1,h+1, RGB(p*8,p*8,p*8))
Next p
For p=0 To 15
Box((p+16)*w,h*yy,w+1,h+1, RGB(127+p*8,127+p*8,127+p*8))
Next p
StopDrawing()
ProcedureReturn img
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
If OpenWindow(0, 0, 0, 500, 300, "Colors", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
SetWindowColor(0,0)
imgcolors= mkPaleta(WindowWidth(0)-4,WindowHeight(0)-34)
ImageGadget(0,2,2,WindowWidth(0)-4,WindowHeight(0)-34, ImageID(imgcolors))
TextGadget(1,2,WindowHeight(0)-34,WindowWidth(0)-4,30,"LMB select color - RMB exit",#PB_Text_Center|#SS_CENTERIMAGE)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 0
If EventType()= #PB_EventType_RightClick
Break
EndIf
If EventType()= #PB_EventType_LeftClick
StartDrawing(ImageOutput(imgcolors))
x= DesktopMouseX()-WindowX(0)-2
y= DesktopMouseY()-WindowY(0)-2
If x>=0 And x<ImageWidth(imgcolors) And y>=0 And y<ImageHeight(imgcolors)
newcolor= Point(x,y)
EndIf
StopDrawing()
SetGadgetColor(1,#PB_Gadget_BackColor,newcolor)
EndIf
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
CompilerEndIf