Как вызвать событие, когда перерисовывается элемент управления 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() метод.

Другие вопросы по тегам