none
Canvas 设置 RenderTransform.SetValue(TranslateTransform.XProperty, 100.0); 报错:灾难性故障 RRS feed

  • 问题

  •  <Canvas Height="120" x:Name="CvsLeft" Width="910" Canvas.Left="-910" Canvas.Top="120">
                <Canvas.RenderTransform>
                    <TransformGroup>
                        <ScaleTransform/>
                        <SkewTransform/>
                        <RotateTransform/>
                        <TranslateTransform/>
                    </TransformGroup>
                </Canvas.RenderTransform>
                <Image Height="120" Width="910" Source="images/bg_red.png" Stretch="Fill"/>
            </Canvas>
    ------------------------------------------------------------------------------------------------------

      CvsLeft.RenderTransform.SetValue(TranslateTransform.XProperty, 100.0); 报错:灾难性故障 (异常来自 HRESULT0x8000FFFF (E_UNEXPECTED))

    我只是想为Canvas的TranslateTransform.XProperty赋值

    打火机
    2009年3月12日 14:59

答案

  •     <Canvas Height="120" x:Name="CvsLeft" Width="910" Canvas.Left="-910" Canvas.Top="120">  
            <Canvas.RenderTransform> 
                <TransformGroup> 
                    <TranslateTransform X="0"/>  
                </TransformGroup> 
            </Canvas.RenderTransform> 
            <Image Height="120" Width="910" Source="images/bg_red.png" Stretch="Fill"/>  
        </Canvas> 

    修改Xaml即可,使用 RenderTransform.SetValue的时候必须在初始化这个变换的时候给你要转换的值进行初始化
    <TranslateTransform X="0"/> 
    • 已标记为答案 打火机 2009年3月13日 5:33
    2009年3月12日 16:51
    版主
  •             解决了。
                currentX = e.GetPosition(null).X;
                TransformGroup tsGroup = (TransformGroup)CvsLeft.RenderTransform;
                tsGroup.Children[0].SetValue(TranslateTransform.XProperty, (leftTouchArea.Width - currentX) * rate1);

    打火机
    • 已标记为答案 打火机 2009年3月13日 5:33
    2009年3月13日 5:32

全部回复

  •     <Canvas Height="120" x:Name="CvsLeft" Width="910" Canvas.Left="-910" Canvas.Top="120">  
            <Canvas.RenderTransform> 
                <TransformGroup> 
                    <TranslateTransform X="0"/>  
                </TransformGroup> 
            </Canvas.RenderTransform> 
            <Image Height="120" Width="910" Source="images/bg_red.png" Stretch="Fill"/>  
        </Canvas> 

    修改Xaml即可,使用 RenderTransform.SetValue的时候必须在初始化这个变换的时候给你要转换的值进行初始化
    <TranslateTransform X="0"/> 
    • 已标记为答案 打火机 2009年3月13日 5:33
    2009年3月12日 16:51
    版主
  •   <Canvas x:Name="CvsLeft" Height="120" Width="910" Canvas.Left="-910" Canvas.Top="120">
                <Canvas.RenderTransform>
                    <TransformGroup>
                        <TranslateTransform X="0"/>
                    </TransformGroup>
                </Canvas.RenderTransform>
                <Image Height="120" Width="910" Source="images/bg_red.png" Stretch="Fill"/>
      </Canvas>
    -------------------------------------------------------------------------------------------------------------------
    private void leftTouchArea_MouseMove(object sender, MouseEventArgs e)
    {
            currentX = e.GetPosition(null).X;
            double x=(leftTouchArea.Width - currentX) * rate1;
            CvsLeft.RenderTransform.SetValue(TranslateTransform.XProperty , x);  //还是报错:灾难性故障 (异常来自 HRESULT0x8000FFFF (E_UNEXPECTED))
    }
    打火机
    2009年3月13日 1:25
  • 建议你不要把根布局做变换,会有问题
    2009年3月13日 3:16
    版主
  •             解决了。
                currentX = e.GetPosition(null).X;
                TransformGroup tsGroup = (TransformGroup)CvsLeft.RenderTransform;
                tsGroup.Children[0].SetValue(TranslateTransform.XProperty, (leftTouchArea.Width - currentX) * rate1);

    打火机
    • 已标记为答案 打火机 2009年3月13日 5:33
    2009年3月13日 5:32
  •  一看就是后台代码的问题,RenderTransform不能直接SetValue,呵呵

    My blog: http://blog.csdn.net/dotfun http://dotfun.cnblogs.com

    My contact: QQ:372900288 E-mail:372900288@qq.com msn:sellnet007@hotmail.com

    2009年3月16日 6:56
    版主