Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Bitmap   Найти похожие ветки 

 
Mih   (2005-01-21 05:55) [0]

Помогите кто знает или догадывается!
Как в bitmap-е узнать какой цвет преобладающий
и сколько % занимает ???


 
Александр1   (2005-01-21 06:36) [1]

Вот держи код работа с цветами. Может пригодится.
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls;

type
 Col=0..255;
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Button4: TButton;
   Button5: TButton;
   Button6: TButton;
   Label1: TLabel;
   Label2: TLabel;
   Label3: TLabel;
   Edit1: TEdit;
   Edit2: TEdit;
   Edit3: TEdit;
   procedure FormActivate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
   procedure Button5Click(Sender: TObject);
   procedure Button6Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
x,y,z:col;

implementation

{$R *.DFM}

procedure TForm1.FormActivate(Sender: TObject);
begin
Edit1.Text:=IntToStr(2);
Edit2.Text:=IntToStr(2);
Edit3.Text:=IntToStr(2);
x:=0;
y:=0;
z:=0;
Form1.Color:=RGB(x,y,z);
Label1.Caption:=IntToStr(x);
Label2.Caption:=IntToStr(y);
Label3.Caption:=IntToStr(z);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
x:=x+StrToInt(Edit1.Text);
Label1.Caption:=IntToStr(x);
Form1.Color:=RGB(x,y,z);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
y:=y+StrToInt(Edit2.Text);
Label2.Caption:=IntToStr(y);
Form1.Color:=RGB(x,y,z);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
z:=z+StrToInt(Edit3.Text);
Label3.Caption:=IntToStr(z);
Form1.Color:=RGB(x,y,z);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
x:=x-StrToInt(Edit1.Text);
Label1.Caption:=IntToStr(x);
Form1.Color:=RGB(x,y,z);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
y:=y-StrToInt(Edit2.Text);
Label2.Caption:=IntToStr(y);
Form1.Color:=RGB(x,y,z);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
z:=z-StrToInt(Edit3.Text);
Label3.Caption:=IntToStr(z);
Form1.Color:=RGB(x,y,z);
end;

end.


 
Mih   (2005-01-21 06:56) [2]

Спасибо ... может и пригодится


 
Mih   (2005-01-21 07:57) [3]

Может быть кто хотябы направление укажет в котором двигаться ???
Зараннее спасибо!!


 
MBo ©   (2005-01-21 08:37) [4]

Придется перебрать все пикселы с использованием ScanLine или другого быстрого метода доступа к пикселам (например, отсюда:  http://www.delphimaster.ru/articles/pixels/index.html )
Если битмап менее чем 24-х битный, результаты (гистограмму) можно хранить в массиве, для 24-х битного затраты по памяти весьма существенны, так что можно попробовать какую-либо динамическую структуру данных использовать (дерево или список)


 
Mih   (2005-01-21 08:49) [5]

Спасибо MBo, я делаю перебором (хотя в душе надеялся на более быстрый способ) спасибо что разубедил меня что такой способ существует!!!!
Вопрос снимается ... ( а очень жаль...)



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.047 c
1-1106436379
KPOT
2005-01-23 02:26
2005.02.06
Работа с динамически создаваемыми объектами.


14-1105957027
Anton++
2005-01-17 13:17
2005.02.06
NAROD.ru


9-1099400987
Colt1978
2004-11-02 16:09
2005.02.06
Перемещение объектов + GLTerrainRender (GLScene)


14-1106199071
Бабу
2005-01-20 08:31
2005.02.06
только мне не видно?


1-1106521601
ninja
2005-01-24 02:06
2005.02.06
прокрутка StringGrid