Advanced Delphi Systems- bitmap çevirin

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
Asri
Kıdemli Üye
Mesajlar: 767
Kayıt: 16 Eyl 2003 09:54
Konum: istanbul

Advanced Delphi Systems- bitmap çevirin

Mesaj gönderen Asri »

Aşağıdaki unit'i unit1'de uses olarak ekleyip bu unit içindeki procedure ve function'ları kullanbilirsiniz.

Bu unit program bitmap çevirme işleminde kullanılır.

Kod: Tümünü seç

unit ads_BitmapFlip;

interface
Uses Windows,Graphics;

Function BitmapFlip(
  Const Vertical   : Boolean;
  Const Horizontal : Boolean;
  var   BitmapIn   : TBitmap;
  out   BitmapOut  : TBitmap):  Boolean;

implementation

Type
  TColorData = Array[0..128000] Of TRGBTriple;
  pColorData = ^TColorData;

Function BitmapFlip(
  Const Vertical   : Boolean;
  Const Horizontal : Boolean;
  var   BitmapIn   : TBitmap;
  out   BitmapOut  : TBitmap):  Boolean;
Var
  DataIn    : pColorData;
  DataOut   : pColorData;
  inRow     : Integer;
  inCol     : Integer;
Begin
  Result := False;
  Try
    If BitmapIn.PixelFormat <> pf24bit Then Exit;
    With BitmapOut Do
    Begin
      Width       := BitmapIn.Width;
      Height      := BitmapIn.Height;
      PixelFormat := BitmapIn.PixelFormat;
    End;
    For inRow := 0 To BitmapIn.Height - 1 Do
    Begin
      DataIn := BitmapIn.Scanline[inRow];
      If Vertical Then
      Begin
        DataOut := BitmapOut.ScanLine[BitmapIn.Height - 1 - inRow];
      End
      Else
      Begin
        DataOut := BitmapOut.ScanLine[inRow];
      End;
      If Horizontal Then
      Begin
        For inCol := 0 To BitmapIn.Width-1 Do DataOut[inCol] := DataIn[BitmapIn.Width-1-inCol];
      End
      Else
      Begin
        For inCol := 0 To BitmapIn.Width-1 Do DataOut[inCol] := DataIn[inCol];
      End;
    End;
    Result := True;
  Except
  End;
End;

End.
Öğrenmek ve öğretmek, akıntıya karşı yüzmek gibidir ilerleyemediğiniz taktirde gerilersiniz.
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

Mesaj gönderen nosedive »

fonksiyonların kullanımı hakkında bir örnek verebilirmisiniz ?
Kullanıcı avatarı
vkamadan
Kıdemli Üye
Mesajlar: 1935
Kayıt: 17 Mar 2004 03:52
Konum: Adapazarı
İletişim:

Mesaj gönderen vkamadan »

merhabalar ,

Kod: Tümünü seç

procedure bitmapcevirtest;
var
CevrilecekResim,CevrilenResim:TBitmap;
begin
try
CevrilecekResim:=TBitmap.create;
CEvrilecekResim.LoadFromFile('c:\cevirilecek.bmp');
CEvrilenResim:=TBitmap.create;
BitmapFlip(True,False,CEvrilecekREsim,CEvrilenREsim); //REsimi Dikey Çevirmek için

BitmapFlip(False,True,CEvrilecekREsim,CEvrilenREsim); //REsimi Yatay Çevirmek için

CevrilenResim.SaveToFile('c:\cevrilmis.bmp');


finally
CEvrilecekresim.free;
cevrilenresim.free;
end;
end;

kolay geslin.
Volkan KAMADAN
www.polisoft.com.tr
Cevapla