Vraag : Vul een serie met vlotte opeenvolging van kleuren

Hi
die ik heb gewenst om de elementen van een serie (van willekeurige lengte) te bevolken met een vlotte vooruitgang van kleurenwaarden. Gebruikend „BlendColors“ ik kan een centrale kleur tussen twee waarden vinden. Van welk ik zou houden zijn een keurig algoritme om elk van deze middenwaarden in een bepaalde array.
e.g. voor een serie van lengten
the bij index n afd. 2 (Vraag het Vi) te vullen zijn BlendColors (kleur [0], kleur [n]…)de waarde
then
the bij index [n afd. 2] afd. 2 is het resultaat BlendColors (kleur [0], Vi…)
etc.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 functie BlendColors (Color1, Color2: TColor; Opaciteit: Byte): TColor;
var
  r, g, B: Byte;
  c1, c2: PByteArray;
begin
  Color1: = ColorToRGB (Color1);
  Color2: = ColorToRGB (Color2);
  c1: = @Color1;
  c2: = @Color2;

  r: = (C1 [0] + (c2 [0] - c1 [0]) * Opaciteit Trunc/256);
  g: = (C1 [1] + (c2 [1] - c1 [1]) * Opaciteit Trunc/256);
  B: = (C1 [2] + (c2 [2] - c1 [2]) * Opaciteit Trunc/256);

  Resultaat: = RGB (r, g, B);
eind; 

Antwoord : Vul een serie met vlotte opeenvolging van kleuren

Het veronderstellen c1 [0 die] =20 en c2 [0] zal =250, Nrow=8 en Ncol=5, de matrijs voor rood door de bovengenoemde code wordt berekend hieronder RESULTAAT 1 zijn.
Zo, zal de eerste kleur c1 [0] =20 in cel (1.1) en c2 [0] in cel (8.5) verschijnen. Natuurlijk, kan Nrow aan Ncol gelijk zijn. Gelieve te nemen nota van eerste col. en de eerste rij heeft de zelfde herhaalde waarde.  

Als het een lineaire variatie in de eerste rij en col. wordt vereist, dan zou de factor moeten zijn:
      factor = ((rij-1) + (col.-1))/(vlotter) ((nrow-1) + (ncol-1));
Die manier, de resultaatmatrijs, voor de zelfde parameters zoals voordien, zoals in RESULTAAT 2 hieronder zal zijn.

Jose

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
RESULTAAT 1 voor de rode component

        20      20      20      20      20
        20      28      36      44      52
        20      36      52      69      85
        20      44      69      93      118
        20      52      85      118     151
        20      61      102     143     184
        20      69      118     167     217
        20      77      135     192     250 

RESULTAAT 2
        20      40      61      82      103
        40      61      82      103     124
        61      82      103     124     145
        82      103     124     145     166
        103     124     145     166     187
        124     145     166     187     208
        145     166     187     208     229
        166     187     208     229     250  
Andere oplossingen  
 
programming4us programming4us