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

Вниз

Как повернуть 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
2-1131743215
Lemur
2005-11-12 00:06
2005.11.27
приведение типов (абстрактный вопрос)


5-1112861007
TForm
2005-04-07 12:03
2005.11.27
Наследование свойств другого класса


4-1127290638
umbra
2005-09-21 12:17
2005.11.27
как узнать открыт файл или нет?


14-1131469401
nop
2005-11-08 20:03
2005.11.27
Стиль оформления кода


14-1131265857
Леший
2005-11-06 11:30
2005.11.27
Прошивка мобильника