Ocena użytkownikóww: ***** / 3
Nadesłany przez Tomasz Lubiński, 08 września 2005 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
Histogram_d/Unit1.pas:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
OleCtrls, chartfx3, jpeg, ExtCtrls, StdCtrls, TeeProcs, TeEngine, Chart,
Series;
type
TForm1 = class(TForm)
Button1: TButton;
ObrazKolor: TImage;
HistogramKolor: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
ObrazMono: TImage;
HistogramMono: TChart;
LineSeries1: TLineSeries;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
r, g, b: Array [0..255] of Double;
gray: Array [0..255] of Double;
color: TColor;
begin
for i := 0 to 255 do
begin
r[i] := 0;
g[i] := 0;
b[i] := 0;
gray[i] := 0;
end;
for i := 0 to ObrazKolor.Width-1 do
for j := 0 to ObrazKolor.Height-1 do
begin
color := ObrazKolor.Canvas.Pixels[i,j];
r[GetRValue(color)] := r[GetRValue(color)] + 1;
g[GetGValue(color)] := g[GetGValue(color)] + 1;
b[GetBValue(color)] := b[GetBValue(color)] + 1;
end;
HistogramKolor.SeriesList.Series[0].Clear;
HistogramKolor.SeriesList.Series[1].Clear;
HistogramKolor.SeriesList.Series[2].Clear;
HistogramKolor.SeriesList.Series[0].AddArray(r);
HistogramKolor.SeriesList.Series[1].AddArray(g);
HistogramKolor.SeriesList.Series[2].AddArray(b);
for i := 0 to ObrazMono.Width-1 do
for j := 0 to ObrazMono.Height-1 do
begin
color := ObrazMono.Canvas.Pixels[i,j];
gray[GetRValue(color)] := gray[GetRValue(color)] + 1;
end;
HistogramMono.SeriesList.Series[0].Clear;
HistogramMono.SeriesList.Series[0].AddArray(gray);
end;
end.