Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.21;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
2-1226217609
VitGun
2008-11-09 11:00
2008.12.21
Показ нескольких всплывающих окон


2-1224144320
lewka
2008-10-16 12:05
2008.12.21
Форма по верх всех окон


2-1226599478
vegarulez
2008-11-13 21:04
2008.12.21
Подскажите как сделать картинку на канве TButton(VCL)


3-1211885281
Vlad Oshin
2008-05-27 14:48
2008.12.21
Транзакции осуществляются в соединении или как? ADO


15-1224514064
GrayFace
2008-10-20 18:47
2008.12.21
Как проследить, какие программы гоняют пакеты?