Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизКак повернуть TBitMap на 180 градусов, быстро ? Найти похожие ветки
← →
Pics (2005-11-04 02:10) [0]Кстати, может есть какие удобные библиотеки с эффектами, для обработки картинок?
← →
ппп (2005-11-04 04:34) [1]//может есть какие удобные библиотеки с эффектами, для обработки картинок?
fastdib proeffectimage jandraw
ни как нельзя повернуть Tbitmap на 180 градусов, быстро
← →
Antonn © (2005-11-04 04:37) [2]глянь сюды:
http://delphimaster.net/view/9-1130193018/
← →
PZ (2005-11-04 07:38) [3]Посмотри http://delphiworld.narod.ru/
5000 статей - там есть
← →
Crazy_Diman © (2005-11-05 01:59) [4]
CONST
PixelCountMax = 32768;
TYPE
pRGBArray = ^TRGBArray;
TRGBArray = ARRAY[0..PixelCountMax-1] OF TRGBTriple;
procedure Rotate180(
const SourceImage : Tbitmap;
const DestImage : Tbitmap );
var
RowProcessed, TargetRow :pRGBArray;
X, Y : LongInt;
SourceWidth : LongInt;
SourceHeight : LongInt;
begin
SourceImage.PixelFormat:= pf24bit;
SourceWidth := SourceImage.Width;
SourceHeight := SourceImage.Height;
DestImage.Width :=SourceWidth;
DestImage.Height :=SourceHeight;
DestImage.PixelFormat:= pf24bit;
for Y := 0 to (SourceHeight-1) do
begin
TargetRow:=DestImage.ScanLine[SourceHeight-1-Y];
RowProcessed:=SourceImage.ScanLine[Y];
for X := 0 to (SourceWidth-1) do
begin
TargetRow^[(SourceWidth-1)-X] := RowProcessed^[x] ;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Rotate180(Image1.Picture.Bitmap,Image2.Picture.Bitmap);
end;
← →
Crazy_Diman © (2005-11-05 02:13) [5]Рисунок 3000x3000 повернул за 375 ms
← →
Fenik © (2005-11-05 13:37) [6]Взять прицип из [4] + http://www.delphimaster.ru/articles/pixels/index.html - будет универсально и ещё быстрее.
← →
Antonn © (2005-11-05 13:53) [7]кстати, я на своем модуле игру написал, у некоторых тормозит:)
← →
Crazy_Diman © (2005-11-05 18:41) [8]вот на написал может пригадится поворот Изоброжения в лево или в право на 90 градусов
procedure Rotate90left(
const SourceImage : Tbitmap;
const DestImage : Tbitmap );
var
RowProcessed, TargetRow :pRGBArray;
X, Y : LongInt;
SourceWidth : LongInt;
SourceHeight : LongInt;
begin
SourceImage.PixelFormat:= pf24bit;
SourceWidth := SourceImage.Width;
SourceHeight := SourceImage.Height;
DestImage.Width :=SourceImage.Height;
DestImage.Height :=SourceImage.Width;
DestImage.PixelFormat:= pf24bit;
for Y := 0 to (SourceHeight-1) do
begin
RowProcessed:=SourceImage.ScanLine[Y];
for X := 0 to (SourceWidth-1) do
begin
TargetRow:=DestImage.ScanLine[SourceWidth-1-x];
TargetRow^[Y] := RowProcessed^[x] ;
end;
end;
end;
procedure Rotate90right(
const SourceImage : Tbitmap;
const DestImage : Tbitmap );
var
RowProcessed, TargetRow :pRGBArray;
X, Y : LongInt;
SourceWidth : LongInt;
SourceHeight : LongInt;
begin
SourceImage.PixelFormat:= pf24bit;
SourceWidth := SourceImage.Width;
SourceHeight := SourceImage.Height;
DestImage.Width :=SourceImage.Height;
DestImage.Height :=SourceImage.Width;
DestImage.PixelFormat:= pf24bit;
for Y := 0 to (SourceHeight-1) do
begin
RowProcessed:=SourceImage.ScanLine[SourceHeight-Y-1];
for X := 0 to (SourceWidth-1) do
begin
TargetRow:=DestImage.ScanLine[x];
TargetRow^[Y] := RowProcessed^[x] ;
end;
end;
end;
← →
Crazy_Diman © (2005-11-05 20:25) [9]Рисунок 3000x3000 повернул на 90-270 за 4000 ms
← →
Fenik © (2005-11-06 19:08) [10]> Antonn © (05.11.05 13:53) [7]
> кстати, я на своем модуле игру написал, у некоторых тормозит:)
Кто бы сомневался :)))
← →
Crazy_Diman © (2005-11-06 23:01) [11]Antonn
мне твой метод не понравился слишком он тормозит
Fenik
я твой мне понравился только есть несколько недостатков ну это не так трудно переделать
← →
Antonn © (2005-11-07 05:27) [12]Crazy_Diman © (06.11.05 23:01) [11]
мне твой метод не понравился слишком он тормозит
он более универсальный, и расчетом там побольше...
Fenik © (06.11.05 19:08) [10]
Кто бы сомневался :)))
ну не у всех же:)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c