![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отрыть файл 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]поподробнее, пожалуйста, что конкретно нужно и что именно неясно.