![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TBitmap
Res © (2008-11-11 19:57:00)Здравствуйте, пишу ДЛЛ к одной программе(неважно какой :D ). Она хранит изображение в PGFX. Задача: преобразовать из PGFX в BMP.
Делаю так:
var
bmp:TBitmap;
x,y,lx,ly:integer;
color:TColor;
begin
lx:=PImage.Width;
ly:=Pimage.Height;
bmp:=TBitmap.Create;
bmp.Width:=PImage.Width;
bmp.Height:=PImage.Height;
for y:=0 to ly do
begin
for x:=0 to lx do
begin
bmp.Canvas.Pixels[x,y]:=RGB(Pimage.data.r,Pimage.data.g,Pimage.data.b);
end;
end;
bmp.SaveToFile('c:\test.bmp');
bmp.Free;
но почему то рисуется тока пиксель 0 0
TGFX=record
Width,Height:Integer;
data:P32Color; {указатель на пиксель с координатами [x=0,y=0].
следующий за ним будет [x=1,y=0],[x=2,y=0] ... [x=Width-1,y=0],
затем подряд [x=0,y=1],[x=2,y=1] ... [x=Width-1,y=1],
....
[x=0,y=Height-1],[x=2,y=Height-1] ... [x=Width-1,y=Height-1].
}
end;
PGFX=^TGFX;
....
T32Color=packed record
b,g,r:byte;
A :byte;
end;
T32ColorArray=array[0..0] of T32Color;
P32ColorArray=^T32ColorArray;
P32Color=^T32Color;
Sapersky (2008-11-12 16:14:00) [1]А как сделать смещение?
Var pc : P32Color;
pc := Image.Data;
for y:=0 to ly-1 do begin
for x:=0 to lx-1 do begin
bmp.Canvas.Pixels[x,y]:=RGB(pc.r,pc.g,pc.b);
Inc(pc);
end;
end;
Res (2008-11-11 23:01:00) [2]спасибо, будем разбиратся
{RASkov} (2008-11-11 23:00:00) [3]> [3] Res (11.11.08 22:01)
> А как сделать смешение?
В приведенном тобой описании TGFX - никак. Это что-то непонятная структура, хранящая не понятно какую информацию, но в ее data точно не массив, а ссылка на запись из четырех байт...
Так что - никак. Или ты что-то напутал....
Может всеж так должно быть:
TGFX=record
Width,Height:Integer;
data: P32ColorArray;
в свою очереть P32ColorArray наверняка тоже "не правильный" массив.... всеж тут должен быть двумерный имхо
Как говорится: "Что-то тут не так" :)
Res (2008-11-11 22:20:00) [4]Не компилится: "Array type required", "'.' expected but ';' found"
www (2008-11-11 22:16:00) [5]Pimage.data[x].r
?
Res (2008-11-11 22:01:00) [6]А как сделать смешение? вот мне нужно, как раз их PImage сделать норм БМП картинку, только я незнаю как)
{RASkov} (2008-11-11 20:53:00) [7]> Что такое Pimage.data ?
Ай.... там дальше написано....
Но все равно смещения никакого в цикле не видно...
{RASkov} (2008-11-11 20:52:00) [8]> [0] Res (11.11.08 19:57)
> bmp.Canvas.Pixels[x,y]:=RGB(Pimage.data.r,Pimage.data.g,Pimage.data.b);
Что такое Pimage.data ? ....и как по нему идет цикл? т.е. тут его не видно ...прохода
Всегда берется одно и тоже значение.... вот и "заливается" твой bmp одним пикселом из Pimage.data....