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


Comments

  • Excellent

    Posted by Ajay Vijay on 11/20/2004 06:04am

    Great!

    Reply
  • Typo and fix for memory leaks...

    Posted by Legacy on 12/29/2000 12:00am

    Originally posted by: Chetan

    First, the typo :
    
    

    In PowerColorPicker.cpp, currently line 585 is

    currentColor = HLStoRGB(currentHue,currentSaturation,currentLuminance);

    to be changed to

    currentColor = HLStoRGB(currentHue,currentLuminance,currentSaturation);

    Second, these lines to be added to the class destructor, in the same file

    if (pickerDC)
    {
    delete pickerDC;
    pickerDC = NULL;
    }

    if (luminanceBarDC)
    {
    delete luminanceBarDC;
    luminanceBarDC = NULL;
    }

    That will remove the memory leaks.

    Otherwise, a very good piece of work.

    Thanks,
    Chetan.

    Reply
  • There are memory leaks!

    Posted by Legacy on 12/06/1999 12:00am

    Originally posted by: pxz

    There are memory leaks!

    Reply
Leave a Comment
  • Your email address will not be published. All fields are required.

Top White Papers and Webcasts

  • Today's agile organizations pose operations teams with a tremendous challenge: to deploy new releases to production immediately after development and testing is completed. To ensure that applications are deployed successfully, an automatic and transparent process is required. We refer to this process as Zero Touch Deployment™. This white paper reviews two approaches to Zero Touch Deployment--a script-based solution and a release automation platform. The article discusses how each can solve the key …

  • Companies undertaking an IT project need to find the right balance between cost and functionality. It's important to start by determining whether to build a solution from scratch, buy an out-of-the-box solution, or a combination of both. In reality, most projects will require some system tailoring to meet business requirements. Decision-makers must understand how much software development is enough and craft a detailed implementation plan to ensure the project's success. This white paper examines the different …

Most Popular Programming Stories

More for Developers

RSS Feeds

Thanks for your registration, follow us on our social networks to keep up-to-date