2012-02-17 4 views
2

Я пытаюсь изменить местоположение изображения при наведении курсора мыши. У меня есть:Изменение местоположения изображения в WPF

<Image 
    Name="cat" 
    Source="CatRun.bmp" 
    Visibility="Hidden" 
    HorizontalAlignment="Center" 
    VerticalAlignment="Center" 
    Width="100" 
    Height="100" 
    UIElement.MouseEnter="cat_MouseEnter"/> 

в XAML и:

private void cat_MouseEnter(object sender, MouseEventArgs e) 
{ 

} 

в C#.

Как я могу установить местоположение специально на холсте?

+2

вар изображение = (изображение) отправителя; Canvas.SetLeft (изображение, 42); –

ответ

4

Вот пример:

<Canvas x:Name="canvas"> 
    <Rectangle x:Name="rect" Width="20" Height="20" Canvas.Left="10" Canvas.Top="10" Fill="Blue" MouseEnter="RectangleMouseEnter" /> 
</Canvas> 

Вы должны установить вложенные свойства сверху, слева (или снизу, справа)

private void RectangleMouseEnter(object sender, MouseEventArgs e) 
    { 
     Canvas.SetTop(rect, 50); 
     Canvas.SetLeft(rect, 50); 
    } 
1

Для того, чтобы установить положение изображения на холсте от кода-за вы можете использовать что-то вроде:

private void cat_MouseEnter(object sender, MouseEventArgs e) 
{ 
    Canvas.SetLeft(cat, 100); //set x coordinate of cat Image to 100 
    Canvas.SetTop(cat, 300); //set y coordinate of cat Image to 300 
} 

Update: В некоторых случаях вы не можете быть в состоянии получить доступ к cat объект по имени из этого метода. Чтобы заставить его работать, просто используйте объект-отправитель, который должен быть Image, который вызвал событие, как H.B. описанных в его комментарии.

+1

Это может быть неудачно в зависимости от именных копий ... –

+0

Да, вы правы, тогда он не будет компилироваться. Я уточню ответ с дополнительной информацией. –