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