Round clip: true circle (Viewbox/1x1 ellipse) + grabbable corner handle (transparent source grid, non-hit-testable selection overlay); resize locks square in round mode

This commit is contained in:
2026-08-06 15:05:21 -07:00
parent b64830ed11
commit 7bc70872d9
4 changed files with 169 additions and 24 deletions
+26 -21
View File
@@ -8,7 +8,7 @@
mc:Ignorable="d"
Title="{Binding WindowTitle}" Height="720" Width="1280"
MinWidth="1180" MinHeight="600"
Icon="/Assets/llama-logo-icon.png"
Icon="/ytLive;component/Assets/llama-logo-icon.png"
Background="#1a1a2e"
WindowStartupLocation="CenterScreen"
Closing="MainWindow_Closing"
@@ -323,6 +323,7 @@
<DataTemplate>
<Grid Width="{Binding Width}" Height="{Binding Height}"
Opacity="{Binding Opacity}"
Background="Transparent"
RenderTransformOrigin="0.5,0.5">
<Grid.RenderTransform>
<ScaleTransform ScaleX="{Binding MirrorScale}"/>
@@ -348,25 +349,29 @@
</Style>
</Image.Style>
</Image>
<Ellipse>
<Ellipse.Style>
<Style TargetType="Ellipse">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Type}" Value="Webcam"/>
<Condition Binding="{Binding ClipShape}" Value="Round"/>
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Visible"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
<Ellipse.Fill>
<ImageBrush ImageSource="{Binding DisplaySource}" Stretch="UniformToFill"/>
</Ellipse.Fill>
</Ellipse>
<Viewbox Stretch="Uniform">
<Grid Width="1" Height="1">
<Ellipse>
<Ellipse.Style>
<Style TargetType="Ellipse">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Type}" Value="Webcam"/>
<Condition Binding="{Binding ClipShape}" Value="Round"/>
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Visible"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Ellipse.Style>
<Ellipse.Fill>
<ImageBrush ImageSource="{Binding DisplaySource}" Stretch="UniformToFill"/>
</Ellipse.Fill>
</Ellipse>
</Grid>
</Viewbox>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
@@ -687,7 +692,7 @@
<!-- About -->
<StackPanel Grid.Row="1" Margin="0,16,0,0"
Visibility="{Binding IsAboutOpen, Converter={StaticResource BoolToVis}}">
<Image Source="/Assets/llama-logo.png" Height="140" Stretch="Uniform"
<Image Source="/ytLive;component/Assets/llama-logo.png" Height="140" Stretch="Uniform"
HorizontalAlignment="Center" Margin="0,0,0,12"/>
<TextBlock Text="ytLlive" FontSize="22" FontWeight="Bold" Foreground="#e94560"
HorizontalAlignment="Center"/>