#1 :
Code: Select all
Procedure ColorPercent(color,percent)
nred = Red(color) + percent
If nred > 255 :nred = 255 : EndIf
If nred < 0 : nred = 0 : EndIf
ngreen = Green(color) + percent
If ngreen > 255 :ngreen = 255 : EndIf
If ngreen < 0 : ngreen = 0 : EndIf
nblue = Blue(color) + percent
If nblue > 255 :nblue = 255 : EndIf
If nblue < 0 : nblue = 0 : EndIf
ncolor = RGB(nred,ngreen,nblue)
ProcedureReturn ncolor
EndProcedure
OpenWindow(0,0,0,400,100,"test",#PB_Window_SystemMenu |#PB_Window_ScreenCentered)
color=$0000FF
TextGadget(1,10,10,50,50,"")
SetGadgetColor(1,#PB_Gadget_BackColor ,color)
TextGadget(2,340,10,50,50,"")
SetGadgetColor(2,#PB_Gadget_BackColor ,color)
TrackBarGadget(3,5,70 ,390,20,0,510)
SetGadgetState(3,255)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 3
percent = GetGadgetState(3) - 255
ncolor = ColorPercent(color,percent)
SetGadgetColor(2,#PB_Gadget_BackColor ,ncolor)
EndSelect
EndSelect
Until Quit = 1
#2 :
Code: Select all
Procedure BrightnessRGB(RGB_Color.l, Delta.w)
!XOR Edx, Edx
!XOR Ebx, Ebx
!XOR Ecx, Ecx
!MOV BX, Word [p.v_Delta]
!MOV Eax, dWord [p.v_RGB_Color]
!MOV DL, AL
!CALL .adddelta
!MOV CL, DL
!MOV DL, AH
!CALL .adddelta
!MOV CH, DL
!BSWAP Eax
!MOV DL, AH
!CALL .adddelta
!MOV AH, DL
!BSWAP Eax
!MOV AX, CX
!JMP .ready
!.adddelta:
!ADD DX, BX
!BT DX, 15
!JC .negativ
!CMP DX, $FF
!JBE .inrange
!.bigger:
!MOV DX, $00FF
!JMP .inrange
!.negativ:
!XOR Edx, Edx
!.inrange:
!RET
!.ready:
ProcedureReturn
EndProcedure
OpenWindow(0,0,0,400,100,"test",#PB_Window_SystemMenu |#PB_Window_ScreenCentered)
color=$0000FF
TextGadget(1,10,10,50,50,"")
SetGadgetColor(1,#PB_Gadget_BackColor ,color)
TextGadget(2,340,10,50,50,"")
SetGadgetColor(2,#PB_Gadget_BackColor ,color)
TrackBarGadget(3,5,70 ,390,20,0,510)
SetGadgetState(3,255)
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Gadget
Select EventGadget()
Case 3
percent = GetGadgetState(3) - 255
ncolor = BrightnessRGB(color,percent)
SetGadgetColor(2,#PB_Gadget_BackColor ,ncolor)
EndSelect
EndSelect
Until Quit = 1