Click here to Skip to main content
12,823,048 members (48,177 online)
Click here to Skip to main content
Add your own
alternative version

Tagged as


14 bookmarked
Posted 13 Sep 2011

Random Color Generator

, 15 Sep 2011 CPOL
Rate this:
Please Sign up or sign in to vote.
This is an old version of the currently published tip/trick.


I wanted to create a random color generator.

The initial application was a plot color attribution for a graphic control.

I wanted to be able to put some weight to some color to ensure to stay away from them (like the background color). I haven’t found anything that does that. I decided to code it myself.

The Solution

I started from the excellent code found here on code project from  Guillaume Leparmentier:

In fact, it was so good that I kept 99.9% of it and mainly just added 2 others classes (plus a Form to test).

I only added/modify:

  • I changed Color class used from WinForm (System.Drawing) to WPF (System.Windows.Media)

  • I added Distance calculation in CIELab.cs

  • I added a helper function GetColorDistanceCIELab in ColorSpaceHelper class

  • I added ColorGenerator, ColorRatio class and FormTestColorGenerator.

The class is based on random color generation with auto adjustable distance tolerance. High distance tolerance at start but decrease while adding new colors.

The code references Framework.Net 4.0 (and WPF) and the project is VS2010.



The main usage is defined in the header comments of ColorGenerator class

Comments copy:

// Main usage:
    ColorGenerator colorGenerator = new ColorGenerator();
    // Faster, little bit more color with less distance 
    colorGenerator.Speed = 50; 
    // My background, 4 to stay far away 
    colorGenerator.UsedColors.Add(new ColorGenerator.ColorRatio(System.Windows.Media.Colors.Black, 4)); 
    // No White
    colorGenerator.UsedColors.Add(new ColorGenerator.ColorRatio(System.Windows.Media.Colors.White, 1.2)); 
    // Grid Color
    colorGenerator.UsedColors.Add(new ColorGenerator.ColorRatio(System.Windows.Media.Colors.LightGray, 1)); 
    System.Windows.Media.Color c = colorGenerator.GetNextColor();


Hope it helps some


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Eric Ouellet
Software Developer
Canada Canada

I'm a Canadian-french developer for many years now.
I'm actually programming in C# but I also had some fun in the past with: VB, C++, SQL, Java, etc.
I like to play games like Carcassone, Settlers of Catane, Chess, Poker...
I also like photography.


You may also be interested in...

Comments and Discussions

Discussions posted for the Published version of this article. Posting a message here will take you to the publicly available article in order to continue your conversation in public.
GeneralMy vote of 5 Pin
conmajia19-Jul-12 4:49
memberconmajia19-Jul-12 4:49 
GeneralRe: My vote of 5 Pin
Eric Ouellet19-Jul-12 4:54
memberEric Ouellet19-Jul-12 4:54 
GeneralRe: Oh yes ! I just uncomment the lines in ColorGenerator to hav... Pin
herves29-Sep-11 23:26
memberherves29-Sep-11 23:26 
GeneralReason for my vote of 4 nice Pin
kiran dangar4-Oct-11 20:11
memberkiran dangar4-Oct-11 20:11 
GeneralJust what i need today (for a EPG program)!. Thanks Pin
herves29-Sep-11 6:42
memberherves29-Sep-11 6:42 
GeneralRe: I'm happy to know. I hope it will be as expected ! Pin
Eric Ouellet29-Sep-11 7:10
memberEric Ouellet29-Sep-11 7:10 
GeneralReason for my vote of 5 nice, why didn't you make it a short... Pin
johannesnestler21-Sep-11 5:28
memberjohannesnestler21-Sep-11 5:28 
GeneralRe: Thanks a lot. I didn't write an article because I thought th... Pin
Eric Ouellet21-Sep-11 6:27
memberEric Ouellet21-Sep-11 6:27 
GeneralReason for my vote of 4 Interesting... Must admit the first... Pin
BrianBissell20-Sep-11 4:16
memberBrianBissell20-Sep-11 4:16 
GeneralRe: Thanks for your vote ! I agree the picture is a kind of hook... Pin
Eric Ouellet20-Sep-11 4:30
memberEric Ouellet20-Sep-11 4:30 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web01 | 2.8.170308.1 | Last Updated 15 Sep 2011
Article Copyright 2011 by Eric Ouellet
Everything else Copyright © CodeProject, 1999-2017
Layout: fixed | fluid