Power Color Picker

Features :

This new control derived from CWnd provides an interface for users to select
colors for an object. It is more intuitive than CColorDialog in windows API.

Interface description :

  • right rectangle : luminance.
  • left rectangle : saturation on x axis, hue on y axis.
  • bottom rectangle : currently selected color.

This control is fully resizable on the fly. You could specify a size for
each rectangle.
When you move the cursor with shift or ctrl, the color change only on one
axis (hue or saturation)

 

How to use it in a dialog :

  • a member variable must be added to the dialog :
    ...

    protected:
    PowerColorPicker picker;
    ...

  • create the picker in the method OnInitDialog() of your dialog :



//specify the control size
RECT
rect={10,10,390,300};

//create control in OnInitDialog()
picker.Create(NULL,”Haha”,WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS ,rect,this, NULL, NULL);


  • define a callback when the user click/move on picker :
    
    
    //define a callback
    void testfunc(COLORREF ref,void *ClientData)
    {
    	CColorPickerDlg * local= (CColorPickerDlg*)ClientData;
    
    	char str[256];
    	sprintf(str,"RED: %ld\nGREEN: %ld\nBLUE: %ld",GetRValue(ref),GetGValue(ref),GetBValue(ref));
    
    	OutputDebugString(str);
    
    }
    
    
    ...
    
    //register callbacks in OnInitDialog()
     
    picker.RegisterCallbackOnMove(testfunc,this); 
    picker.RegisterCallbackOnLButtonDown(testfunc,this);
    ...
  • you could define the width of the luminance bar anywhere in your source
    :

    ...
    
    
    picker.SetLuminanceBarWidth(20);
    
    ...

Downloads

Download Source Code – 31 Kb
Download Demo Application – 9 Kb

More by Author

Get the Free Newsletter!

Subscribe to Developer Insider for top news, trends & analysis

Must Read