protected override void OnMouseMove(MouseEventArgs args)
{
base.OnMouseMove(args);
Point pt = args.GetPosition(this);
bool isReallyOverNow = (pt.X >= 0 && pt.X < ActualWidth && pt.Y >= 0 && pt.Y < ActualHeight);
if (isReallyOverNow != isMouseReallyOver)
{
isMouseReallyOver = isReallyOverNow;
InvalidateVisual();
}
}