2016-03-09 39 views
5

Mam WriteableBitmap, który wyświetli wideo w oknie. Obecnie potrzebuję do ukryć podtytuł na dole. Chcę użyć efektu aero, ale tylko zasłonić dół WriteableBitmap.Czy jest możliwe dodanie efektu Aero do samej Kontroli w WPF?

co oznacza, jest to oryginalny:

enter image description here

I chcę dodać Grid Control, który ma aerodynamiczny efekt, na przykład:

enter image description here

Ale don” wiem jak, już myślę o zrobieniu najniższego miejsca na zdjęciu i zastosowaniu jakiegoś efektu, a następnie umieszczeniu go na wierzchu, ale wygląda na niską wydajność dla writableBitmap, ponieważ to oznacza, że ​​trzeba przetworzyć 25 wokół obrazu bardzo sekund ...

Aktualizacja: Oto mój kod:

<Grid> 
    <Image x:Name="imgFrame"/> 
</Grid> 

private WriteableBitmap bitmap; 

private void OnVideoFrameRunning(FrameArgs e) 
{ 
    if (null == bitmap) 
    { 
     bitmap = new WriteableBitmap(e.Width, e.Height, 72, 72,PixelFormats.Bgr24, null); 
     imgFrame.Source = bitmap; 
    } 

    bitmap.WritePixels(new Int32Rect(0, 0, e.Width, e.Height), e.Buffer, e.Width * 3, 0, 0); 
} 
+0

"Efekt aero" jest tworzony za pomocą opcji DrawThemeTextEx(), DTTOPS.iGlowSize. Szanse na to, że można z tego korzystać w WPF, nie są dobre, to powoduje problem z przestrzenią powietrzną. OuterGitBitmapEffect zniknął w wersji 4.0, musisz strzelać do DropShadowEffect. –

+1

Pytanie wydaje się nie mieć nic wspólnego z wpf. Rozważ opuszczenie tagu. To jest pytanie o więcej przetwarzania obrazu niż cokolwiek wpf (biorąc pod uwagę, że nie jesteś usatysfakcjonowany jedyną odpowiedzią podaną poniżej) – Maverik

+0

Czy musisz mieć tekst na WritableBitmap, czy po prostu chcesz wyświetlić tekst nad formantem w oknie WPF? ? – FriendlyGuy

Odpowiedz

2

Można zrobić coś takiego:

<Grid> 
    <Grid.Effect> 
     <BlurEffect Radius="18"/> 
    </Grid.Effect> 
    <TextBlock HorizontalAlignment="Center" 
       VerticalAlignment="Bottom" 
       FontSize="40" 
       Foreground="#444444" 
       Text="Some Subtitles" 
       Margin="0 0 0 20"/> 
</Grid> 

Promień = "0": Radius="0"

Promień = "18":

Radius="18"

+0

Wygląda świetnie, ale potrzebuję tylko ukryć podtytuł na WritableBitmap. – qakmak

+2

@qakmak Jak to jest typowe dla SO, proszę podać swój kod pokazujący, co już zrobiłeś i odpowiednie bity, w których zmagasz się z pytaniem. Jako taka jest to oczekiwana odpowiedź i należy ją zaakceptować, biorąc pod uwagę twoje tagi i ogólny brak danych. – Maverik

+0

Wydaje mi się, że nawet jeśli umieściłem swój kod, odpowiedź jest zbyt duża, ponieważ powiedziałem, że potrzebuję obszaru rozmycia na dole obrazu, a nie całego obrazu. Teraz dasz mi całą siatkę rozmycia. – qakmak