// Es wird eine
Linie, die aus bunten Farbpunkten besteht, vom Punkt procedure multicoloredline(dc: HDC; x1, y1, x2, y2: integer; clr: array of TColor); var gx, gy, i, n, z: integer; stp, wrt: double; f: TColor; procedure farbe; begin if z > 0 then f := clr[n] else f := random(1000000); end; procedure weiter(a, b: integer); begin setpixel(dc, x1 + a, y1 + b, f); inc(n); if n >= z then n := 0; wrt := wrt + stp; farbe; end; begin z := length(clr); wrt := 0; n := 0; farbe; gx := x2 - x1; gy := y2 - y1; if abs(gx) > abs(gy) then begin if gx = 0 then stp := 0 else stp := gy / gx; if x1 < x2 then begin for i := 0 to gx do weiter(i, round(wrt)); end else begin for i := gx to 0 do weiter(gx - i, -round(wrt)); end; end else begin if gy = 0 then stp := 0 else stp := gx / gy; if y1 < y2 then begin for i := 0 to gy do weiter(round(wrt), i); end else begin for i := gy to 0 do weiter(-round(wrt), gy - i); end; end; end; // bunte Linie mit wiederkehrendem Muster procedure TForm1.ToolButton3Click(Sender: TObject); begin multicoloredline(canvas.handle, 50, -50, 15, 110, [clred, clyellow, clblack, clfuchsia, clblue, cllime]); end; // bunte Linie mit zufälliger Färbung procedure TForm1.ToolButton4Click(Sender: TObject); begin multicoloredline(canvas.handle, 60, 150, 10, -120, []); end; |