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

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

вопрос по повороту Bitmap [D5, Win95/98, NT4]


Martyn ©   (2002-05-21 12:57:00) 

Привет всем!

подскажите, как повернуть изображение физически в файле на 90 градусов: т.е.

dest.width := source.height;
dest.height := source.width;
dest.pixelformat := source.pixelformat;
dest.pallete := source.palette;


и желательно через WinAPI - скорость очень лимитирует


MBo   (2002-05-21 14:31:00) [1]

это как дело с getdibits иметь. более полный пример с setdibits
я в форуме давал, но поиск не работает
procedure TForm1.Button2Click(Sender: TObject);
var b:tbitmap;
a:array[0..9,0..9] of TRGBQuad;
s:string;
info:tbitmapinfo;
i,j:integer;
begin
b:=tbitmap.create;
b.PixelFormat:=pf24bit;
b.width:=10;
b.height:=10;
b.Canvas.moveTo(0,0);
b.Canvas.LineTo(6,6);
with info.bmiHeader do begin
biWidth:=b.Width;
biHeight:=b.Height;
biSize:=SizeOf(TBITMAPINFOHEADER);
biCompression:=BI_RGB;
biBitCount:=32;
biPlanes:=1;
biSizeImage:=((biWidth*biBitCount+31)div 32)*biHeight*4;//Не обязательно для 24-бит
end;
GetDIBits(b.canvas.handle, B.Handle, 0,B.Height,@a,Info,DIB_RGB_COLORS);
for i:=0 to 9 do begin
s:="";
for j:=0 to 9 do s:=s+inttohex(a[i,j].rgbRed,2)+" ";
memo1.lines.add(s);
end;
image1.picture.assign(b);
b.free;
end;


Martyn   (2002-05-21 14:20:00) [2]

2MBo

c GetDiBits/SetDiBits

API все-таки быстрее работает


MBo   (2002-05-21 13:38:00) [3]

со ScanLine или GetDiBits/SetDiBits?


Martyn   (2002-05-21 13:25:00) [4]

2MBo

а живой код можно увидеть...:)))) буду признателен


MBo   (2002-05-21 13:01:00) [5]

ScanLine или GetDiBits/SetDiBits


Наверх

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