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

  • The explosion in mobile devices and applications has generated a great deal of interest in APIs. Today's businesses are under increased pressure to make it easy to build apps, supply tools to help developers work more quickly, and deploy operational analytics so they can track users, developers, application performance, and more. Apigee Edge provides comprehensive API delivery tools and both operational and business-level analytics in an integrated platform. It is available as on-premise software or through …

  • Live Event Date: September 17, 2014 @ 1:00 p.m. ET / 10:00 a.m. PT Another day, another end-of-support deadline. You've heard enough about the hazards of not migrating to Windows Server 2008 or 2012. What you may not know is that there's plenty in it for you and your business, like increased automation and performance, time-saving technical features, and a lower total cost of ownership. Check out this upcoming eSeminar and join Rich Holmes, Pomeroy's practice director of virtualization, as he discusses the …

Most Popular Programming Stories

More for Developers

Latest Developer Headlines

RSS Feeds