Dynamic Clipping
<StackPanel xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/interactivedesigner/2006"
mc:Ignorable="d"
x:Class="PaintDrawExamples.DynamicClipping"
Width="640" Height="480">
<StackPanel.Resources>
<Storyboard x:Key="OnLoaded"/>
</StackPanel.Resources>
<StackPanel.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard x:Name="OnLoaded_BeginStoryboard" Storyboard="{DynamicResource OnLoaded}"/>
</EventTrigger>
</StackPanel.Triggers>
<Canvas Height="100" x:Name="Canvas" Width="436">
<Canvas.Clip>
<PathGeometry>
<PathFigure StartPoint="1,5" IsClosed="True" IsFilled="True">
<BezierSegment IsSmoothJoin="True" Point1="2,2" Point2="26,1" Point3="24,127" IsStroked="True"/>
<BezierSegment IsSmoothJoin="True" Point1="1,1" Point2="14,9" Point3="19,5" IsStroked="True"/>
<BezierSegment IsSmoothJoin="True" Point1="14,11" Point2="18,-22.5" Point3="24,-2" IsStroked="True"/>
<BezierSegment IsSmoothJoin="True" Point1="26,-200" Point2="29,1" Point3="300,5" IsStroked="True"/>
</PathFigure>
</PathGeometry>
</Canvas.Clip>
<Rectangle d:LayoutOverrides="Height" Stroke="{x:Null}" Fill="Red" Width="436" Height="100" x:Name="Rectangle" Canvas.Left="0" Canvas.Top="0"/>
<Label Background="Black" x:Name="Label" Content="This is my clipped space." Canvas.Left="46" Canvas.Top="26" d:IsHidden="True"/>
</Canvas>
</StackPanel>
//File:Window.xaml.vb
Imports System
Imports System.IO
Imports System.Net
Imports System.Windows
Imports System.Windows.Input
Imports System.Windows.Controls
Imports System.Windows.Data
Imports System.Windows.Media
Imports System.Windows.Media.Animation
Imports System.Windows.Navigation
Namespace PaintDrawExamples
Public Partial Class DynamicClipping
Public Sub New()
Me.InitializeComponent()
Me.Canvas.VerticalAlignment = VerticalAlignment.Center
Me.Canvas.HorizontalAlignment = HorizontalAlignment.Center
AddHandler CompositionTarget.Rendering, AddressOf CompositionTarget_Rendering
End Sub
Private Sub CompositionTarget_Rendering(sender As Object, e As EventArgs)
Dim mousePos As Point = Mouse.GetPosition(Me.Canvas)
Dim clippingRegion As Geometry = Me.Canvas.Clip
Dim newPos As New TranslateTransform()
newPos.X = mousePos.X - (Me.Canvas.Width / 2)
newPos.Y = mousePos.Y - (Me.Canvas.Height / 2)
clippingRegion.Transform = newPos
End Sub
End Class
End Namespace
Related examples in the same category