Главная страница
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.044 c
9-1098980059
FRick
2004-10-28 20:14
2005.02.06
GLScene - деревья и прочая растительность


14-1106092204
noone_____
2005-01-19 02:50
2005.02.06
inttostr in cpp


6-1100941387
l.a_
2004-11-20 12:03
2005.02.06
Как отправить файл на почту на чистом Delphi


1-1106291256
Fantom
2005-01-21 10:07
2005.02.06
Запуск одной копии программы и обнаружение ее при повторном запус


3-1104820506
YurikGL
2005-01-04 09:35
2005.02.06
Автоподстановка из родительской таблицы