Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Bitmap [D7, WinXP]


Mih ©   (2005-01-21 05:55:00) 

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


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

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


MBo   (2005-01-21 08:37:00) [2]

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


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

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


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

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


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

Вот держи код работа с цветами. Может пригодится.
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.


Наверх

Титульная страница Поиск, карта сайта Написать письмо