2008-12-03 14 views
21

Potrzebuję utworzyć prostokątny dymek z zaokrąglonymi narożnikami z tekstem wewnątrz, jak dymek z kreskówek. Potrzebuję bańki, aby rozwinąć się poziomo i pionowo, w zależności od rozmiaru tekstu, który zawiera. Chciałbym, aby strzałka mowy i promień zaokrąglonych narożników pozostały niezmienne.Jak utworzyć niestandardowy formant WPF, taki jak bąbelkowy z stałymi narożnikami?

Mogę po prostu użyć ścieżki do stworzenia mojej bańki, ale nie mogę zmienić rozmiaru bańki i utrzymywać promień narożników i strzałek na stałe ... to jest cała ścieżka, która zostanie zmieniona.

Byłbym wdzięczny, że ktoś mógłby wskazać mi właściwy kierunek.

usuwa martwy link ImageShack

Oto ostateczna wersja łatwość sterowania kreskówki bąbelkowych. Dodałem prostokąta bez obrysu do wersji Jobi Joy, aby ukryć koniec linii ścieżki, zamiast próbować zrobić, a następnie pojawić się w jednej linii z prostokącie.

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="40"/> 
    </Grid.RowDefinitions> 
    <Rectangle Fill="#FF686868" Stroke="#FF000000" RadiusX="10" RadiusY="10"/> 
    <Path Fill="#FF686868" Stretch="Fill" Stroke="#FF000000" HorizontalAlignment="Left" Margin="30,-5.597,0,-0.003" Width="25" Grid.Row="1" Data="M22.166642,154.45381 L29.999666,187.66699 40.791059,154.54395"/>     
    <Rectangle Fill="#FF686868" RadiusX="10" RadiusY="10" Margin="1"/> 
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="25" Text="Hello World" TextWrapping="Wrap"/>      
</Grid> 

Odpowiedz

25

Użyj tego XAML, można utworzyć PopUp lub ContentControl i może dać tej siatki jako szablon sterowania na to, aby uzyskać spójny wygląd

<Grid x:Name="grid"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="40"/> 
    </Grid.RowDefinitions> 
    <Rectangle Fill="#FF686868" Stroke="#FF000000" RadiusX="10" RadiusY="10"/> 
    <Path Fill="#FF686868" Stretch="Fill" Stroke="#FF000000" HorizontalAlignment="Left" Margin="30,-1.6,0,0" Width="25" Grid.Row="1" 
     Data="M22.166642,154.45381 L29.999666,187.66699 40.791059,154.54395"/>   
    <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="25" Text="Hello World" TextWrapping="Wrap"/>   
</Grid> 

usuwa martwy ImageShack łącza

I wykonałam blog post on this

1

Zaokrąglone narożniki mogą być tylko z zestawem Corner Border aliasingu.

Stała/strzałka mowy może być ścieżką umieszczoną w siatce wraz z ramką.

Zapoznaj się z szablonem kontrolnym dla GroupBox i zobacz, jak zawartość "nagłówka" jest ustawiona tak, aby unosić się nad ramką Border grupy.

Zrobilibyście to samo, gdybyście nie ustawili ścieżki na dole zamiast na górze.

Powiązane problemy