algorytm.org

Implementacja w Delphi/Pascal

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Histogram - Implementacja w Delphi/Pascal
Ocena użytkownikóww: *****  / 3
SłabyŚwietny
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.
Dodaj komentarz