2013-05-21 15 views
0

问题1WPF覆盖在画布上缩放+不工作以及

我怎么能不重写删除整个画布内容的书面文本的文本? 我可以通过C#来做到吗?在不添加XAML代码中的元素的情况下?

问题2

我intergrated变焦功能,但它放大只有当我指着我的画布上绘制的东西。当我只指着我的Canvas时,我怎么才能缩放?

XAML

<Canvas x:Name="coordinateSystemBackground" VerticalAlignment="Top" Cursor="Cross" MouseWheel="coordinateSystemBackground_MouseWheel" RenderTransformOrigin="0.688,0.559" Width="1200" Height="720"> 
    <ScrollViewer Grid.Column="0" Grid.Row="0" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Width="1200" Height="750"> 
     <Canvas x:Name="coordinateSystem" HorizontalAlignment="Left" VerticalAlignment="Top" Cursor="Cross" UseLayoutRounding="False" Canvas.Left="0" Width="1200" Height="720"> 
      <Canvas.RenderTransform> 
       <ScaleTransform x:Name="st"/> 
      </Canvas.RenderTransform> 
     </Canvas> 
    </ScrollViewer> 
</Canvas> 

My Zoom function

private void coordinateSystemBackground_MouseWheel(object sender, MouseWheelEventArgs e) 
{ 
    // Skalierungsfaktor 
    double ScaleRate = 1.1; 

    //Transformiert gesamte Canvas... 
    if (e.Delta > 0) 
    { 
     st.ScaleX *= ScaleRate; 
     st.ScaleY *= ScaleRate; 
     labZoomFaktor.Content = (int)((st.ScaleX * 100) - 100) + " %"; 
    } 
    else 
    { 
     st.ScaleX /= ScaleRate; 
     st.ScaleY /= ScaleRate; 
     labZoomFaktor.Content = (int)((st.ScaleX * 100) - 100) + " %"; 
    }    
} 

回答

0

为了命中测试拿起鼠标输入需要有光标下的目标元素的某些非空部分。在这种情况下,画布的孩子们正在拾取事件并将其冒泡到Canvas,但Canvas本身只是空白区域,因此不会拾取鼠标输入。通过在Canvas上设置Background="Transparent",您可以使整个事情可见,并进行测试。