Solved

Keep same colors algorithm

Posted on 2004-10-11
2
152 Views
Last Modified: 2010-04-05
I have for my button a color Color1 ( ex: $005200A4 ) . For border Color2 ( ex.$0036006C) and Color3 ( ex: $009428FF ).

The color2 is a dark Color1 and Color3 is the light Color1.

I wish to get instantly Color2/Color3 when change Color1 to have omolog dark/light color for the new Color1. Same darkness/lightness scale.

How to do that?
0
Comment
Question by:ginsonic
  • 2
2 Comments
 
LVL 7

Expert Comment

by:LRHGuy
ID: 12278264
The lower the number the "darker" the color (I think).

  $52  $00  $A4  is color 1
  $36  $00  $6C  is color2 (darker, lower numbers)
 -$1C -$00 -$38  subtract from normal color to get darker ... lowest number should be $00

  $94  $28  $FF  is color3 (lighter, higher numbers)
 +$42 +$28 +$5B  add to normal color to get lighter ... highest number should be $FF

You do need to deal with each piece of the color separately, as shown.

Just a thought...
0
 
LVL 7

Accepted Solution

by:
LRHGuy earned 500 total points
ID: 12278394
This seems to work for me. You might want to play with the values being added/subtracted to get a good contrast...

type
  c1=record
      case integer of
       0:( p:array[0..3] of byte);
       1:(l:longint)
    end;

procedure MakeColors(aOrig:tColor; var aLighter, aDarker:TColor);
var
  C,L,D:c1;
  function Lighter(orig,add:byte):byte;
  begin
{$R-}
    result:=orig+add;
    if result<orig then
      result:=$ff; {full bright}
{$R+}
  end;
  function Darker(orig,add:byte):byte;
  begin
{$R-}
    result:=orig-add;
    if result>orig then
      result:=$00; {full dark}
{$R+}
  end;
begin
  C.l:=aOrig;
// make lighter color
  L.L:=C.L;
  L.p[1]:=lighter(C.p[1],$5B);
  L.p[2]:=lighter(C.p[2],$28);
  L.p[3]:=lighter(C.p[3],$42);
  aLighter:=L.L;
// make darker color
  D.L:=C.L;
  D.p[1]:=darker(C.p[1],$1c);
  D.p[2]:=darker(C.p[2],$1c);
  D.p[3]:=darker(C.p[3],$38);
  aDarker:=D.l;
end;

procedure TForm2.Button1Click(Sender: TObject);
var
  C,L,D:tColor;
begin
  self.color:=clYellow;
  makecolors(Self.Color,L,D);
  panel1.color:=L;
  radiogroup1.color:=D;
end;
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Introduction The parallel port is a very commonly known port, it was widely used to connect a printer to the PC, if you look at the back of your computer, for those who don't have newer computers, there will be a port with 25 pins and a small print…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
This Micro Tutorial hows how you can integrate  Mac OSX to a Windows Active Directory Domain. Apple has made it easy to allow users to bind their macs to a windows domain with relative ease. The following video show how to bind OSX Mavericks to …
With the power of JIRA, there's an unlimited number of ways you can customize it, use it and benefit from it. With that in mind, there's bound to be things that I wasn't able to cover in this course. With this summary we'll look at some places to go…

920 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

15 Experts available now in Live!

Get 1:1 Help Now