Mega Code Archive

 
Categories / C# / WPF
 

Use a Thumb to resize a Canvas control by responding to the DragDelta event

<Canvas xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     x:Class="Thumb_wcp.Pane1">   <Canvas Width="100" Height="100" Name="myCanvasStretch">     <TextBox Name="changes"           Width="{Binding ElementName=myCanvasStretch,Path=Width}"            Height="{Binding ElementName=myCanvasStretch,Path=Height}"           Text="Size: 100, 100"/>     <Thumb Name="myThumb" Canvas.Left="80" Canvas.Top="80" Background="Blue"            Width="20" Height="20" DragDelta="onDragDelta"/>   </Canvas> </Canvas> //File:Window.xaml.cs using System; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Documents; using System.Windows.Navigation; using System.Windows.Shapes; using System.Windows.Data; using System.Windows.Media; namespace Thumb_wcp {     public partial class Pane1 : Canvas     {         void onDragDelta(object sender, DragDeltaEventArgs e)         {             double yadjust = myCanvasStretch.Height + e.VerticalChange;             double xadjust = myCanvasStretch.Width + e.HorizontalChange;             if ((xadjust >= 0) && (yadjust >= 0))             {                 myCanvasStretch.Width = xadjust;                 myCanvasStretch.Height = yadjust;                 Canvas.SetLeft(myThumb, Canvas.GetLeft(myThumb) + e.HorizontalChange);                 Canvas.SetTop(myThumb, Canvas.GetTop(myThumb) + e.VerticalChange);                 Console.WriteLine(myCanvasStretch.Width);                 Console.WriteLine(myCanvasStretch.Height);             }         }     } }