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