2016-10-20 11 views
0

私はサードパーティ製のライブラリから事前定義されたユーザーコントロールを持っています。このUser Controlからリージョンを切り取り、メインウィンドウで使用したいと思います。クリッピングはUIElementのClipプロパティで簡単に実行できますが、この単一のセグメントではサイズ変更が機能しません。 UIElementまたはUser Controlから切り取り、コンポーネントの測定、サイズ変更、レンダリングにこの領域のみを使用できますか?WPFのユーザーコントロールの切り取り領域のみのサイズ変更

+0

私はちょうど今、 'Transform'を使用して切断されたエリアのサイズ変更を示すサンプルを作りました。 – AnjumSKhan

+0

お望みなら、そのサンプルを投稿できます。 – AnjumSKhan

+0

サンプルAnjumを見ることができれば本当にいいです – Cocomico

答えて

0

参照してください以下のサンプル:

XAML

<Window x:Class="WpfStackOverflow.Window12" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:local="clr-namespace:WpfStackOverflow" 
     Title="Window12" Height="300" Width="600">  

    <Canvas> 
     <Button Content="Press" Height="35" Width="75" Canvas.Left="29" Canvas.Top="43" Click="Button_Click_1">     
      <Button.Background> 
       <LinearGradientBrush EndPoint="0,1" StartPoint="0,0"> 
        <GradientStop Color="#FF62CFB6" Offset="0"/> 
        <GradientStop Color="#FFEBEBEB" Offset="0.5"/> 
        <GradientStop Color="#FF91B3E4" Offset="0.391"/> 
        <GradientStop Color="#FFF11278" Offset="1"/> 
       </LinearGradientBrush> 
      </Button.Background> 
      <Button.Clip> 
       <GeometryGroup> 
        <EllipseGeometry RadiusX="50" RadiusY="25"/> 
        <RectangleGeometry Rect="55 20 75 35"/> 
       </GeometryGroup> 
      </Button.Clip> 
     </Button> 

     <Path x:Name="Pth" Width="75" Height="35" Fill="AliceBlue" Canvas.Top="80" Canvas.Left="300" Stretch="None" Stroke="#FF7C4444" Data=""/> 

     <Thumb Width="10" Height="10" Canvas.Left="217" Canvas.Top="34" DragDelta="Thumb_DragDelta_1"/> 
     <TextBlock Canvas.Left="217" TextWrapping="Wrap" Text="Drag this Thumb to right" Canvas.Top="10"/> 
     <TextBlock Canvas.Left="10" TextWrapping="Wrap" Text="Click this button" Canvas.Top="10"/> 
    </Canvas> 

</Window> 

CODE

using System.Windows; 
using System.Windows.Controls; 
using System.Windows.Controls.Primitives; 
using System.Windows.Media; 

namespace WpfStackOverflow 
{ 
    /// <summary> 
    /// Interaction logic for Window12.xaml 
    /// </summary> 
    public partial class Window12 : Window 
    { 
     public Window12() 
     { 
      InitializeComponent(); 
     } 

     private void Button_Click_1(object sender, RoutedEventArgs e) 
     { 
      var c = VisualTreeHelper.GetClip(sender as Button); 
      Pth.Data = c; 
     } 

     double scaleX=1, scaleY=1; 
     private void Thumb_DragDelta_1(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e) 
     { 
      if (Pth.LayoutTransform == null) 
       Pth.LayoutTransform = new ScaleTransform(1, 1); 

      scaleX += e.HorizontalChange; 
      scaleY += e.HorizontalChange; 

      Pth.LayoutTransform = new ScaleTransform(scaleX, scaleY); 

      System.Diagnostics.Debug.WriteLine((1 + e.HorizontalChange).ToString()); 
      Thickness margin = (sender as Thumb).Margin; 
      (sender as Thumb).Margin = new Thickness(margin.Left + e.HorizontalChange, margin.Top, margin.Right, margin.Bottom); 
     } 
    } 
} 
関連する問題