2011-03-05 3 views
9

कंपोजिट ट्रान्सफॉर्म का उपयोग केवल चांदी की रोशनी के लिए किया जाता है? क्या वैसे भी हम इसका इस्तेमाल डब्ल्यूपीएफ या किसी समकक्ष प्रतिस्थापन में कर सकते हैं?क्या कंपोजिट ट्रान्सफॉर्म केवल चांदी की रोशनी में उपयोग किया जाता है?

उत्तर

13

WPF में CompositeTransform नहीं है हालांकि TransformGroup है। इसलिए एक समकक्ष प्रतिस्थापन TransformGroup है जिसमें ScaleTransform, SkewTransform, RotateTransform और TranslateTransform उस क्रम में है।

+0

वर ट्रांस = (CompositeTransform) Btn_showDetail.RenderTransform; यदि (ट्रांस। रोटेशन> 0) { विजुअलस्टेट प्रबंधक .GoToState (यह, "छुपाएं", सत्य); } –

+0

क्या आपको लगता है कि यह काम करेगा अगर कोई WPF के लिए अपना स्वयं का उपयोग करता है? (या सिंकलाइट से एक का उपयोग करें और उपयोग करें?) –

0

यहाँ एक बहुत अच्छे समाधान है अगर आप कोड सफाई के बारे में गुदा हैं:

http://www.singulink.com/CodeIndex/post/getting-rid-of-ugly-transformgroup-blocks-in-wpf

इसका आसान आंखों पर और क्योंकि यह सिर्फ एक TransformGroup देता है, तो आप अभी भी साथ काम करने के मिश्रण डिजाइनर का उपयोग कर सकते परिवर्तन पर एनिमेटिंग!

<Rectangle Width="100" Height="100" Fill="LightGreen" 
     RenderTransform="{data:CompositeTransform ScaleX=2.5, ScaleY=1, SkewX=-60, Rotation=145}" 
     RenderTransformOrigin="0.5,0.5" /> 

कार्यान्वयन:

public class CompositeTransformExtension : MarkupExtension 
{ 
    public double CenterX 
    { 
     get { return _scale.CenterX; } 
     set 
     { 
      _scale.CenterX = value; 
      _skew.CenterX = value; 
      _rotate.CenterX = value; 

     } 
    } 

    public double CenterY 
    { 
     get { return _scale.CenterY; } 
     set 
     { 
      _scale.CenterY = value; 
      _skew.CenterY = value; 
      _rotate.CenterY = value; 
     } 
    } 

    public double ScaleX 
    { 
     get { return _scale.ScaleX; } 
     set { _scale.ScaleX = value; } 
    } 

    public double ScaleY 
    { 
     get { return _scale.ScaleY; } 
     set { _scale.ScaleY = value; } 
    } 

    public double SkewX 
    { 
     get { return _skew.AngleX; } 
     set { _skew.AngleX = value; } 
    } 

    public double SkewY 
    { 
     get { return _skew.AngleY; } 
     set { _skew.AngleY = value; } 
    } 

    public double Rotation 
    { 
     get { return _rotate.Angle; } 
     set { _rotate.Angle = value; } 
    } 

    public double TranslateX 
    { 
     get { return _translate.X; } 
     set { _translate.X = value; } 
    } 

    public double TranslateY 
    { 
     get { return _translate.Y; } 
     set { _translate.Y = value; } 
    } 

    private ScaleTransform _scale = new ScaleTransform(); 
    private SkewTransform _skew = new SkewTransform(); 
    private RotateTransform _rotate = new RotateTransform(); 
    private TranslateTransform _translate = new TranslateTransform(); 

    public CompositeTransformExtension() 
    { 
    } 

    public override object ProvideValue(IServiceProvider serviceProvider) 
    { 
     var group = new TransformGroup(); 

     group.Children.Add(_scale); 
     group.Children.Add(_skew); 
     group.Children.Add(_rotate); 
     group.Children.Add(_translate); 

     return group; 
    } 
} 
संबंधित मुद्दे