Как вызвать событие, когда перерисовывается элемент управления WPF (Управление изображением)? - PullRequest
0 голосов
/ 04 января 2019

У меня есть обработчик события рисования 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 Ответ

0 голосов
/ 04 января 2019

WPF не использует режим рисования WinForm по требованию.Метод OnRender для UIElement вызывается системой макетов всякий раз, когда она хочет, чтобы элемент «перерисовал» сам себя.Вы можете переопределить этот метод в своем классе:

public class YourElement : FrameworkElement
{
    protected override void OnRender(DrawingContext dc)
    {
        base.OnRender(dc);
    }
}

Если вы хотите явно перерисовать элемент, вы можете вызвать метод InvalidateVisual().

...