Create Dynamic Clipping in WPF

In this we will learn how to create dyanamic clipping in WPF.
  • 3020
 

1.Open visual studio 

2.Create a project with wpf application. 

3.Code behind the form windiows.xaml 

<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="614" Height="419"><StackPanel.Resources><Storyboard x:Key="OnLoaded"/>
</
StackPanel.Resources><StackPanel.Triggers><EventTriggerRoutedEvent="FrameworkElement.Loaded"><BeginStoryboard x:Name="OnLoaded_BeginStoryboard"Storyboard="{DynamicResource OnLoaded}"/></EventTrigger></StackPanel.Triggers><CanvasHeight="100" x:Name="Canvas" Width="436"><Canvas.Clip><PathGeometry><PathFigureStartPoint="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="583"Height="407" x:Name="Rectangle" Canvas.Left="-89" 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> 

4.code for the form

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

Partial Public 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(ByVal sender As ObjectByVal 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

Output of the application :

 wpf-dynamic.jpg
  

Categories

More Articles

© 2020 DotNetHeaven. All rights reserved.