2013-12-17 2 views
0

임 창 전화 캔버스에 손가락으로 선을 그릴려고, 내가 이런 짓을하지만 난 그것을 그 캔버스의 모든 요소를 ​​제거 것/분명 그 라인을 제거 할 때Windows Phone 8에서 캔버스 안의 탭 포인트를 제거하는 방법은 무엇입니까?

ContentPanelCanvas.Children.Clear(); 

듣고 내 전체 코드입니다 :

XAML

<Canvas x:Name="ContentPanelCanvas" Grid.Row="1" Background="Transparent" Margin="12,0,12,0"> 

     <Grid Width="450" Height="600"> 
     <Button x:Name="clickMeBtn" Height="72" 
       Width="200" 
       Content="Click Me" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center" Click="clickMeBtn_Click" /> 
     </Grid> 
    </Canvas> 

C# 코드는 다음과 같이이다 :

public MainPage() 
    { 
     InitializeComponent(); 
     this.ContentPanelCanvas.MouseMove += new MouseEventHandler(ContentPanelCanvas_MouseMove); 
     this.ContentPanelCanvas.MouseLeftButtonDown += new MouseButtonEventHandler(ContentPanelCanvas_MouseLeftButtonDown); 
    } 

    void ContentPanelCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     currentPoint = e.GetPosition(ContentPanelCanvas); 
     oldPoint = currentPoint; 
    } 

    void ContentPanelCanvas_MouseMove(object sender, MouseEventArgs e) 
    { 

      currentPoint = e.GetPosition(this.ContentPanelCanvas); 

      line = new Line() { X1 = currentPoint.X, Y1 = currentPoint.Y, X2 = oldPoint.X, Y2 = oldPoint.Y }; 
      line.Stroke = new SolidColorBrush(Colors.White); 
      line.StrokeThickness = 10; 
      this.ContentPanelCanvas.Children.Add(line); 
      oldPoint = currentPoint; 
    } 

    private void clickMeBtn_Click(object sender, RoutedEventArgs e) 
    { 
     MessageBox.Show("Hello Every One "); 
     ContentPanelCanvas.Children.Clear(); 

    } 

코드가 오류없이 실행되고 있지만 제거 버튼이 있습니다. 내가 그리는 선만 어떻게 제거 할 수 있습니까?

답변

1

코드는 정확하게 작성한 것이며 ContentPanelCanvas의 모든 하위를 지우고 있습니다. 당신은 단지 라인을 제거 할 경우에만 줄을 제거 :

foreach (var line in ContentPanelCanvas.Children.OfType<Line>().ToList()) 
    ContentPanelCanvas.Children.Remove(line); 
+0

감사합니다. 작동 중입니다 ... –

+0

대단한, 다른 사람들이 알고있는 답변으로 표시해주세요. –

+0

wp8.1 실버 라이트 용으로 사용하고 있습니다. 전체 라인이 아닌 라인에서 포인트 또는 부분을 제거 할 수 있습니까? 또한 저는 캔버스의 배경 이미지를 가지고 있습니다. –

1

당신은

ContentPanelCanvas.Children.Remove(Line); 

사용하거나 캔버스를 취소하면 인덱스

ContentPanelCanvas.Children.RemoveAt(1); 
1

에 의해 아이를 제거 할 수 있습니다 UIElementCollection에서 "Removes all elements"이됩니다.

당신은 예를 탭 이벤트 처리기에 대한 라인 이벤트 핸들러를 작성해야합니다, 일단 당신이 다음 버튼을 클릭 핸들러에이

ContentPanelCanvas.Children.Remove(controlToDelete); 

controlToDelete처럼 제거, 제거하기 위해 다른 컨트롤의 라인 제어를 보유해야 탭 라인 탭 핸들러 (예 : 라인 컨트롤)에서 삭제하기 위해 보유하고있는 컨트롤

관련 문제