2014-08-29 3 views
1

У меня проблема при написании программы для рисования фигур из текстового файла. В настоящее время моя программа считывает данные из текстового файла и рисует их на холсте, но у меня проблема с событиями MouseEnter и MouseLeave.MouseEnter MouseLeave в C#

Я хотел бы, чтобы полигон менял цвет, если над ним есть мышь. Как я могу это сделать?

Приложение написано в WPF с использованием элемента управления Canvas.

+0

Добро пожаловать в SO! Пожалуйста, предоставьте более подробную информацию о проблеме, с которой вы сталкиваетесь. Что у вас есть? – fuesika

+0

Какая у вас проблема с событиями? У вас возникли проблемы с живописью или обработкой событий? –

+0

Вы можете попробовать событие IsMouseDirectlyOverChanged. MouseLeave работает с границами elmenet, я ожидаю, что это означает ограничивающий прямоугольник. –

ответ

0

Для этого можно использовать event triggers. Например:

<Canvas> 
    <Canvas.Resources> 
     <Style TargetType="Polygon"> 
      <Style.Triggers> 
       <EventTrigger RoutedEvent="MouseEnter"> 
        <BeginStoryboard> 
         <Storyboard> 
          <ColorAnimation Duration="0:0:0.1" 
              Storyboard.TargetProperty="(Polygon.Fill).(SolidColorBrush.Color)" 
              To="Yellow" 
              /> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
       <EventTrigger RoutedEvent="MouseLeave"> 
        <BeginStoryboard> 
         <Storyboard> 
          <ColorAnimation Duration="0:0:0.1" 
              Storyboard.TargetProperty="(Polygon.Fill).(SolidColorBrush.Color)" 
              To="Blue" 
              /> 
         </Storyboard> 
        </BeginStoryboard> 
       </EventTrigger> 
      </Style.Triggers> 
     </Style> 
    </Canvas.Resources> 

    <Polygon Fill="Blue" Canvas.Left="100" Canvas.Top="50"> 
     <Polygon.Points> 
      <Point>0,0</Point> 
      <Point>20,0</Point> 
      <Point>25,5</Point> 
      <Point>20,20</Point> 
      <Point>0,20</Point> 
      <Point>0,0</Point> 
     </Polygon.Points> 
    </Polygon> 

</Canvas> 
+0

McGarnagle Большое спасибо, я хочу, он работает :) –