重绘WPF控件(图像控件)时如何引发事件?

时间:2019-01-04 09:43:45

标签: c# wpf winforms paintevent

我有一个winforms绘画事件处理程序,用于处理图片框的绘画事件。正如绘画事件描述所言:“ ...重绘控件时将触发该事件”。我对此不太了解,我希望在WPF中在Image控件上引发同一事件。但是我找不到任何此类事件。这是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));
        }
    }
}

我已经使用DrawingContext类将事件Hanlder中的所有代码转换为WPF。现在,我仅在“重新绘制Image控件时”可以引发的事件上需要帮助。

1 个答案:

答案 0 :(得分:1)

WPF不使用WinForm的按需模式绘制。每当布局元素希望元素“重绘”自身时,布局系统就会调用public async Task<TenantDetails> ReadBrokerSettings(string tenantId) { FeedOptions queryOptions = new FeedOptions { MaxItemCount = 1 }; var query = this._client.CreateDocumentQuery<TenantDTO>( UriFactory.CreateDocumentCollectionUri(_idDatabase, _idCollection), queryOptions) .Where(f => f.tenantId == tenantId).AsDocumentQuery(); while(query.HasMoreResults) { var results = await query.ExecuteNextAsync(); if(results.Any()) { return _iTenantAssembler.DtoToEntity(results.Single()); } } return null; } 的{​​{1}}方法。您可以在您的课程中覆盖此方法:

OnRender

如果要显式重新渲染元素,则​​可以调用UIElement方法。