Как вызвать событие, когда перерисовывается элемент управления WPF (Управление изображением)?
У меня есть обработчик события рисования winforms, который обрабатывает событие рисования для Picturebox. Как говорится в описании события рисования, "... событие запускается при перерисовке элемента управления". Я не совсем понимаю это, и я хочу вызвать то же событие в WPF для элемента управления изображения. Но я не могу найти такие события. Вот код winforms
Как мне это сделать в WPF??
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (pictureBox1.Image != null)
{
if (temprect != new Rectangle())
{
e.Graphics.DrawRectangle(new Pen(selectionBrush, 2), temprect);
}
}
else
{
using (Font myFont = new Font("Arial", 40, FontStyle.Bold))
{
e.Graphics.DrawString("No Image", myFont, Brushes.LightGray,
new Point(pictureBox1.Width / 2 - 132, pictureBox1.Height / 2 - 50));
}
}
}
Я уже преобразовал весь код в событии Hanlder в WPF, используя класс DrawingContext. Теперь мне нужна помощь только в случае события, которое я могу вызвать, "когда перерисован элемент управления изображением".
1 ответ
WPF не использует рисование в режиме WinForm по требованию. OnRender
метод UIElement
вызывается системой макетов всякий раз, когда она хочет, чтобы элемент сам перерисовал. Вы можете переопределить этот метод в своем классе:
public class YourElement : FrameworkElement
{
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
}
}
Если вы хотите перерисовать элемент явно, вы можете вызвать InvalidateVisual()
метод.