i like to set Backcolor 48 Label "like Gradient" ...
1st Label should be YELLOW and 48st Label BLUE so other Label should have Color between
how
---
how to convert this HEX Color to RGB
Code: Select all
0x01800000
Moderator: Rathinagiri
Code: Select all
0x01800000
Hi Jimmy,
Code: Select all
/*
* MINIGUI - Harbour Win32 GUI library Demo
*
* (c) 2020 Grigory Filatov <gfilatov@inbox.ru>
*/
#include "hmg.ch"
STATIC nLabelObj := 1
FUNCTION MAIN
LOCAL y, x, cSymbol, pos, h := 16
LOCAL aDummy := Array( 48 )
LOCAL ColorBegin := HMG_RGB2n( YELLOW )
LOCAL ColorEnd := HMG_RGB2n( BLUE )
DEFINE WINDOW Form_1 ;
WIDTH 400 ;
HEIGHT 840 ;
TITLE '48 Colors Demo' ;
MAIN
y := 20
x := 10
FOR EACH cSymbol IN aDummy
pos := hb_enumindex( cSymbol )
@ y, x LABEL ( 'Lbl_' + hb_ntos( nLabelObj++ ) ) WIDTH 360 HEIGHT h ;
VALUE pos CENTERALIGN VCENTERALIGN ;
FONTCOLOR HMG_n2RGB( GradientColor( HMG_RGB2n( BLACK ), HMG_RGB2n( WHITE ), 1, 48, Pos ) ) ;
BACKCOLOR HMG_n2RGB( GradientColor( ColorBegin, ColorEnd, 1, 48, Pos ) )
y += h
NEXT
END WINDOW
CENTER WINDOW Form_1
ACTIVATE WINDOW Form_1
RETURN NIL
*------------------------------------------------------------------------------*
STATIC FUNCTION GradientColor( ColorBegin, ColorEnd, AMin, AMax, APosition )
*------------------------------------------------------------------------------*
LOCAL B
LOCAL B1, B2, B3
LOCAL E
LOCAL E1, E2, E3
LOCAL P
B := COLORREF_TO_ArrayRGB( ColorBegin )
B1 := B[ 1 ]
B2 := B[ 2 ]
B3 := B[ 3 ]
E := COLORREF_TO_ArrayRGB( ColorEnd )
E1 := E[ 1 ]
E2 := E[ 2 ]
E3 := E[ 3 ]
IF AMax - AMin <> 0
P := ( APosition - AMin ) / ( AMax - AMin )
ELSE
P := 0
ENDIF
RETURN B1 + Round( ( E1 - B1 ) * P, 0 ) + hb_bitShift( B2 + Round( ( E2 - B2 ) * P, 0 ), 8 ) + hb_bitShift( B3 + Round( ( E3 - B3 ) * P, 0 ), 16 )