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

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

Как отрыть файл BMP в виде цифровой таблице?


Vladimir1984 ©   (2006-12-17 19:53:00) 

Как отрыть файл BMP в виде цифровой таблице?


ProgRAMmer Dimonych   (2006-12-17 22:20:00) [1]

У Cells[] по идее олжно быть что-то типа Value - туда и надо эти Points[] сунуть. А HSL - эо что такое, если не секрет?


Vladimir1984   (2006-12-17 21:47:00) [2]


uses
 SysUtils, ComObj, ActiveX, Graphics;
var o: Variant;
   sh, wb: Variant;
   b:TBitmap;
   x,y:integer;
begin
   b:=TBitmap.Create;
   b.LoadFromFile(ParamStr(1));
   CoInitialize(nil);
   o:=CreateOleObject('Excel.Application');
   o.Visible:=true;
   wb:=o.Workbooks.Add;
   sh:=wb.ActiveSheet;
   sh.Cells.ColumnWidth :=0.25;
   sh.Cells.RowHeight := 2.5;
   for x:=0 to b.Width do
       for y:=0 to b.Height do
           sh.Cells[y+1,x+1].Interior.Color:=b.Canvas.Pixels[x,y];
   CoUninitialize();
   b.Free;
end.

Вот нашел что то подходящее но в Excel, но она просто раскрашивает ячейки, а вот как присвоить каждому цвету, чифровое значение? 0-255 по HSL шкале, чтобы в самой таблице уже получались данные а не раскараска ячеек =)


ProgRAMmer Dimonych   (2006-12-17 21:36:00) [3]

GetRValue, GetGValue и GetBValue а входе получают как раз 32-битное число (то самое, которое в TBitmap.Canvas.Points[]).


ProgRAMmer Dimonych   (2006-12-17 21:35:00) [4]

Вообще говоря, цвет произвольной точки, заданный в формате RGB - 32-битное число. Но оно само по себе мало о чём говорит обычному человеку (да и программисту тоже). Если надо только это 32-битное число, то в классе TBitmap есть TBitmap.Canvas, у которого, в свою очередь, есть свойство-массив Points[]. В квадратных скобках указываются координаты X и Y нужной точки битмапа. Это свойство как раз и вернёт 32-битный код цвета.

А Get?Value - для получения R - красной, G - зелёной, B - синей составляющих цвета. Эти числа уже более информативны для человека, но каждое из них - по 1-му байту.


Vladimir1984   (2006-12-17 21:06:00) [5]


> Используй GetRValue(), GetGValue(), GetBValue() для отдельных
> составляющих цвета или массив YourBitmap.Canvas.Points[x,
> y] для номера цвета в виде 32-битного числа.

Можно не много подробнее )


ProgRAMmer Dimonych   (2006-12-17 21:03:00) [6]

Используй GetRValue(), GetGValue(), GetBValue() для отдельных составляющих цвета или массив YourBitmap.Canvas.Points[x,y] для номера цвета в виде 32-битного числа.


Vladimir1984   (2006-12-17 20:54:00) [7]

файл bmp 100 на 100, для карты высот(OpenGL) по HSL шкале...
Нужно чтобы при открытии появлялась таблица,данные в которой в соответствуют фалу бмп, тоесть например А1(первый столбец, первая строка) пиксель красного цвета = числовому значению 5,и в ячейке таблицы А1 прописываеся 5...


Правильный Вася   (2006-12-17 20:38:00) [8]

в руническом виде прикольнее


Virgo_Style   (2006-12-17 20:07:00) [9]

поподробнее, пожалуйста, что конкретно нужно и что именно неясно.


Наверх

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