Привет, Ричард, я отозвал свой предыдущий ответ и обновил этот новый, надеюсь, это имеет больше смысла. Дополнительно, пожалуйста, используйте опцию «комментировать», если вы хотите получить больше информации о предлагаемом ответе.
По сути, я просто добавил прямоугольник с эффектом свечения на холст, а затем привязал размер ореола к свойству, которым я манипулирую каждый раз, когда мышь перемещается над Canvas
.
Обратите внимание, что для того, чтобы этот код работал в классе, необходимо реализовать интерфейс INotifyPropertyChanged
, который находится в пространстве имен System.ComponentModel
. Вам также необходимо убедиться, что текстовый текст окна установлен правильно.
Содержание моего Window
XAML:
<Canvas Background="DarkGray"
MouseMove="Canvas_MouseMove">
<Rectangle Margin="40,40,0,0"
Width="200"
Height="200"
Fill="Gray"
Stroke="Black"
StrokeThickness="2">
<Rectangle.BitmapEffect>
<OuterGlowBitmapEffect GlowColor="Goldenrod"
GlowSize="{Binding Path=GlowSize}"/>
</Rectangle.BitmapEffect>
</Rectangle>
</Canvas>
</Window>
Код для моего окна:
public class Window1 : Window, INotifyPropertyChanged
{
private double m_glowSize;
public double GlowSize
{
get { return m_glowSize; }
set
{
m_glowSize = value;
NotifyPropertyChanged("GlowSize");
}
}
public Window1() //this is my class constructor
{
DataContext = this;
InitializeComponent();
}
private void Canvas_MouseMove(object sender, MouseEventArgs e)
{
Canvas canvas = sender as Canvas;
if (canvas != null)
{
Point mousePosition = e.GetPosition(canvas);
GlowSize = 20 * (mousePosition.X / canvas.ActualWidth);
}
}
private void NotifyPropertyChanged(string s)
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(s));
}
}
В качестве очень простой интерпретации DataContext вы можете рассматривать его как объект, с которым привязки будут искать свои связанные свойства. В этом случае мы хотим убедиться, что привязки в XAML нашего окна находятся в его коде позади файла.
Кроме того, если вы еще этого не сделали. Взгляните на это
http://msdn.microsoft.com/en-us/library/aa970268.aspx
Мне было очень полезно, когда я только начал
Надеюсь, это поможет.