Nesne Görünüm Önceliği

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
powertrk
Üye
Mesajlar: 27
Kayıt: 01 Eki 2008 12:02

Nesne Görünüm Önceliği

Mesaj gönderen powertrk »

Merhaba Arkadaşlar,
Herhangi bir video bileşeni üzerinde Label, Image, Shape gibi nesneleri görüntüleyemiyorum.
Örnek olarak video üzerinde bir altyazı çalışması düşünülebilir. Label'in transparent özelliğide açık olarak kullanıldığını düşünelim.
Bu gibi durumlarda önceliğini değiştirmeme rağmen video bileşeni her defasında en üstte kalmaya devam ediyor.
Bu konuda nasıl bir çözüm önerirsiniz.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Nesne Görünüm Önceliği

Mesaj gönderen mrmarman »

Merhaba.

- TLabel'in aynı özelliklerine sahip TStaticText ile ön planda gösterir hale getirebilirsiniz. Ama bu sefer de video için transparan özelliğini kaybedecektir.

- Bir görüntü; panel / form üzerinde canvas boyama ile gösteriliyorsa bir label onun üzerine gelebilirdi. Ancak Video gösteren altyapıda Video overlay denen bir yapı kullanılır. Akıcı video / performans için gereklidir. Form veya Panel'in buradaki görevi, ekranda bir yer rezerve etmektir. Ön planda TWinControl benzeri örtücü bir nesne yoksa, video bu ayrılan alana bindirilirken label , paintbox vs. görünmez olurlar çünkü bir boyama hükümsüz kalır. Aslında boyama olur ama hemencecik o boyama üzerine yeni video overlay onu siler.

- Bunun için direkt Video Overlay üzerine direkt yazılabilir. DSPack ücretsiz bir bileşen setidir. Tavsiye ederim. Ben bu söylediğiniz işlemler için ihtiyacım olduğunda tek adresim DSPack olmuştur. Video üzerine transparan yazının yanı sıra animasyonlu logo bile bindirmek mümkün.
Resim
Resim ....Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Nesne Görünüm Önceliği

Mesaj gönderen mrmarman »

Şöyle bir deneme yapabilirsiniz.

Forma bir button, TMediaPlayer, TPanel ile Panel üzerine bir TPaintBox ve bir de TTimer koyun.
Timer'in intervalini 1-100 arası bir değer verin. Aşağıdaki kodu uygulayın. Ekranda flicker yaparak sarı bir çerçeve çizdiğini göreceksiniz. Bu çerçevenin sürekliliği video kare sayısı kadar kere yeniden boyama olduğundan sağlanamaycaktır.

Kod: Tümünü seç

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
  MediaPlayer1.FileName     := 'd:\VideoDosyasi.avi';
  MediaPlayer1.ParentWindow := Panel1.Handle;
  MediaPlayer1.DeviceType   := dtAVIVideo;
  MediaPlayer1.Open;
  MediaPlayer1.Display := Panel1;
  MediaPlayer1.Play;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  PaintBox1.Canvas.Brush.Style := bsClear;
  PaintBox1.Canvas.Pen.Style   := psSolid;
  PaintBox1.Canvas.Pen.Color   := clYellow;
  PaintBox1.Canvas.Pen.Width   := 2;
  PaintBox1.Canvas.Rectangle( 10,10,100,100 );
end;
Resim
Resim ....Resim
Cevapla