Форум: "Начинающим";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];
ВнизTBitmap Найти похожие ветки
← →
Res (2008-11-11 19:57) [0]Здравствуйте, пишу ДЛЛ к одной программе(неважно какой :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;
← →
{RASkov} © (2008-11-11 20:52) [1]> [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....
← →
{RASkov} © (2008-11-11 20:53) [2]> Что такое Pimage.data ?
Ай.... там дальше написано....
Но все равно смещения никакого в цикле не видно...
← →
Res (2008-11-11 22:01) [3]А как сделать смешение? вот мне нужно, как раз их PImage сделать норм БМП картинку, только я незнаю как)
← →
www (2008-11-11 22:16) [4]Pimage.data[x].r
?
← →
Res (2008-11-11 22:20) [5]Не компилится: "Array type required", ""." expected but ";" found"
← →
{RASkov} © (2008-11-11 23:00) [6]> [3] Res (11.11.08 22:01)
> А как сделать смешение?
В приведенном тобой описании TGFX - никак. Это что-то непонятная структура, хранящая не понятно какую информацию, но в ее data точно не массив, а ссылка на запись из четырех байт...
Так что - никак. Или ты что-то напутал....
Может всеж так должно быть:
TGFX=record
Width,Height:Integer;
data: P32ColorArray;
в свою очереть P32ColorArray наверняка тоже "не правильный" массив.... всеж тут должен быть двумерный имхо
Как говорится: "Что-то тут не так" :)
← →
Res (2008-11-11 23:01) [7]спасибо, будем разбиратся
← →
Sapersky (2008-11-12 16:14) [8]А как сделать смещение?
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;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.12.21;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.05 c