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

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

У меня есть битмап. Как его отобразить слева на право? [D7, Win95/98]


Крусайдер ©   (2004-01-17 03:03:00) 

У меня есть битмап. Как его отобразить слева на право?


Mihey   (2004-01-18 21:50:00) [1]

А точно также. Канва то есть.


$HUR!K   (2004-01-18 20:39:00) [2]

!!! А как это сделать в DelphiX ???!!!
(месяца два пытаюсь это выяснить :(


Strumpf   (2004-01-17 16:16:00) [3]

А это зависит от того, о каком праве идет речь...


Crusader   (2004-01-17 15:51:00) [4]

пасибо!


Fenik   (2004-01-17 14:14:00) [5]

procedureFlipBitmap(Bitmap: TBitmap; FlipHor: Boolean);
{Зеркальное отражение изображения.
Если FlipHor = True, то отражение по горизонтали,
иначе по вертикали.}
varx, y, W, H: Integer;
   Pixel_1, Pixel_2: PRGBTriple;
   MemPixel: TRGBTriple;
begin
 Bitmap.PixelFormat := pf24Bit;
 W := Bitmap.Width - 1;
 H := Bitmap.Height - 1;
  ifFlipHor then{отражение по горизонтали}
    fory := 0 toH do begin
       {помещаем оба указателя на строку H:}
     Pixel_1 := Bitmap.ScanLine[y];
     Pixel_2 := Bitmap.ScanLine[y];
       {помещаем второй указатель в конец строки:}
     Inc(Pixel_2, W);
       {цикл идёт только до середины строки:}
      forx := 0 toW div2 do begin
         {симметричные точки обмениваются цветами:}
       MemPixel := Pixel_1^;
       Pixel_1^ := Pixel_2^;
       Pixel_2^ := MemPixel;
       Inc(Pixel_1); {смещаем указатель вправо}
       Dec(Pixel_2); {смещаем указатель влево}
      end;
    end
  else{отражение по вертикали}
   {цикл идёт только до средней строки:}
    fory := 0 toH div2 do begin
       {помещаем первый указатель на строку H,
        а второй на строку симметричную H:}
     Pixel_1 := Bitmap.ScanLine[y];
     Pixel_2 := Bitmap.ScanLine[H - y];
      forx := 0 toW do begin
         {симметричные точки обмениваются цветами:}
       MemPixel := Pixel_1^;
       Pixel_1^ := Pixel_2^;
       Pixel_2^ := MemPixel;
       Inc(Pixel_1); {смещаем указатель вправо}
       Inc(Pixel_2); {смещаем указатель вправо}
      end;
    end;
end;


Князев Сергей   (2004-01-17 13:19:00) [6]

scanline
а потом отражение строки любым доступным методом


Наверх

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