Frage : Eine Reihe mit glatter Reihenfolge von Farben füllen

Hi
, das ich die Elemente einer Reihe (der willkürlichen Länge) mit einer glatten Weiterentwicklung der Farbenwerte bevölkern möchte. Using „BlendColors“ kann ich eine mittlere Farbe zwischen zwei Werten finden. Was ich bin ein ordentlicher Algorithmus möchte, zum jeder dieser Zwischenwerte in einem gegebenen array.
e.g. für eine Reihe Länge n
the Wert an Index n Div. 2 (Anruf es VI) zu füllen bin BlendColors (Farbe [0], Farbe [n]…)
then
the Wert am Index [n Div. 2] Div. 2 ist das Resultat BlendColors (Farbe [0], VI…)
etc.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
 Funktion BlendColors (Color1, Color2: TColor; Opazität: Byte): TColor;
var
  r, g, b: Byte;
  c1, c2: PByteArray;
anfangen
  Color1: = ColorToRGB (Color1);
  Color2: = ColorToRGB (Color2);
  c1: = @Color1;
  c2: = @Color2;

  r: = Trunc (c1 [0] + (c2 [0] - c1 [0]) * Opazität/256);
  g: = Trunc (c1 [1] + (c2 [1] - c1 [1]) * Opazität/256);
  b: = Trunc (c1 [2] + (c2 [2] - c1 [2]) * Opazität/256);

  Resultat: = RGB (r, g, B);
Ende; 

Antwort : Eine Reihe mit glatter Reihenfolge von Farben füllen

Annehmendes c1 [0] =20 und c2 [0] =250, Nrow=8 und Ncol=5, die Matrix für das Rot, das durch den oben genannten Code berechnet wird, sind das RESULTAT 1 unten.
So erscheint erste Farbe c1 [0] =20 in cel (1.1) und in c2 [0] in cel (8.5). Selbstverständlich kann Nrow Ncol gleich sein. Erste Spalte bitte merken und erste Reihe haben den gleichen wiederholten Wert.  

Wenn es einer linearen Veränderung der ersten Reihe und Spalte angefordert wird, dann sollte Faktor sein:
      Faktor = ((row-1) + (col-1))/(Hin- und Herbewegung) ((Nrow-1) + (Ncol-1));
So, die Resultatsmatrix, für die gleichen Parameter wie vor, wie in RESULTAT 2 unten ist.

Jose

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
RESULTAT 1 für den roten Bestandteil
----------------------------------------------
        20      20      20      20      20
        20      28      6      44      52
        20      6      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 
----------------------------------------------
RESULTAT 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  
Weitere Lösungen  
 
programming4us programming4us