Delphix-3 |
![]() |
|
DELPHIX-III TDxDraw componentini bitiriyoruz. Başlamadan yine her zamanki gibi DelphiX Component Package'i bulabileceğimiz URL yi verelim: http://www.ingjapan.ne.jp/hori/index-e.html. TDXDRAW: PROPERTIES Fill: Surface'i belirlenen renk ile doldurmak için kullanılır. Fill(Renk: Integer); Hemen küçük bir örnek yapalım: DxDraw1.Surface.Fill(19); FillRect: Bu komut da belirtilen çerçeve içine belirlenen renk ile doldurur. FillRect(Çerçeve : TRect, Renk : Integer); Örnek: DxDraw1.Surfrace.FillRect(Rect(10,10,50,50),19); FillRectAdd: Grafik efektleri yaratmak için oldukça kullanışlı bir komut. Surface'e renk eklemek için kullanılır. FillRectAdd(Çerçeve : TRect, Renk : Integer); Örnek: DxDraw1.Surface.Draw(0,0,Fsurface.ClientRect,FSurface,False); FSurface.FillRectAdd(Rect(10,10,80,80),19); LoadFromFile: Bu komut sizinde bildiğiniz gibi surface'e resim yüklemek için kullanılır. Bu komutu daha önce DelphiX'in ilk yazı serisinde bir örnekte vermiştim. Ama çok kullanıldığı için basit bir örnekle geçiyorum. Örnek: FSurface := TDirectDrawSurface.Create(DxDraw1.DDraw); FSurface.LoadFromFile('c:\resim.bmp'); FSurface ile işiniz bittiğinde yada çıkışta FSurface Lock: Pixel verilerine direk ulaşılmasını sağlar. Özellikle grafik efektleri için oldukça gerekli. Bu komut sayesinde özellikle surface'in barındırdığı resimler üzerinde değişiklik yapmak için kullanılabilir. Lock işlemi gerçekleştiğinde windows'un çalışmayı durdurduğunu unutmamanız gerek. Bunun için işleminiz bittikten sonra surface'i Unlock etmeniz gerekecektir. Lock(Çerçeve : TRect, TDDSurfaceDesc); Örnek: DDSurfaceDesc 'i kullanmak için USES bölümüne DIRECTX kütüphanesini ekleyin. procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer); var SurfaceDesc: DDSURFACEDESC; X, Y : Integer; begin SurfaceDesc.dwSize:=SizeOf(SurfaceDesc ); DxDraw1.Surface.Lock(Rect(10,10,100,100),SurfaceDesc); for x:=0 to 200 do for y:=0 to 200 do //SetPixel . Ekrani 200*200 boyutlarında pixel basarak boyuyor. PDWord(integer(SurfaceDesc.lpSurface)+Surfacedesc.lpitch*Y + (X shl 1))^ := (LoByte(LoWord(255)) shr 3 shl 11) or //Kırmızı (HiByte(LoWord(0)) shr 2 shl 5) or // Yeşil (LoByte(HiWord(255)) shr 3); // Mavi DxDraw1.Surface.UnLock; DxDraw1.Flip; end;
SetSize: Surface boyutlarını ayarlamak için kullanılır. SetSize(En,Boy : Integer); BitCount: Surface 'in barındırdığı grafiklerin kaç bit olduğunu gösterir. Daha basit bir şekilde, surface'deki grafiklerin 8bit,16bit vs. olup olmadığını bulabilirsiniz. Canvas: Bu hepinizin bildiği bir fonksiyon. surface'de Canvas komutlarına ulaşmak için kullanabilirsiniz. Tek önemli nokta Canvas kullandıktan sonra Release komutunu kullanmanız gerekir. Aksi halde bilgisayarınız kilitlenecek ya da işlem yapmayacaktır. Örnek: Biliyorsunuz ki Canvas'ın birçok fonksiyonu var bunlara değinmeyeceğim. Kullanmanızı da tavsiye etmem. Yavaş olduğunu hepiniz biliyorsunuz. With DxDraw1.Surface.Canvas do begin TextOut(10,10,IntToStr(DxDraw1.Surface.Bitcount)); // Surface'in bit değeri. TextOut(10,40,IntToStr(DxTimer1.FrameRate)); // FPS ekrana basılıyor. Release; end Kartal TURGUT Kartaltr@ixir.com - mr_eagle@hotmail.com
|
||