重绘 WPF 控件(图像控件)时如何引发事件?
How do I raise an event when a WPF control ( Image control) is redrawn?
我有一个 winforms 绘画事件处理程序来处理图片框的绘画事件。正如 paint 事件描述所说,“......当控件被重绘时事件被触发”。我不太明白这一点,我希望在 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));
}
}
}
我已经使用 DrawingContext class 将事件处理程序中的所有代码转换为 WPF。现在,我只需要在我可以筹集 "when the Image control is redrawn" 的事件上得到帮助。
WPF 不使用 WinForm 的按需模式绘画。 UIElement
的 OnRender
方法被布局系统调用,只要它想要元素到 "redraw" 本身。您可以在 class:
中覆盖此方法
public class YourElement : FrameworkElement
{
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
}
}
如果您想明确地重新呈现元素,您可以调用 InvalidateVisual()
方法。
我有一个 winforms 绘画事件处理程序来处理图片框的绘画事件。正如 paint 事件描述所说,“......当控件被重绘时事件被触发”。我不太明白这一点,我希望在 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));
}
}
}
我已经使用 DrawingContext class 将事件处理程序中的所有代码转换为 WPF。现在,我只需要在我可以筹集 "when the Image control is redrawn" 的事件上得到帮助。
WPF 不使用 WinForm 的按需模式绘画。 UIElement
的 OnRender
方法被布局系统调用,只要它想要元素到 "redraw" 本身。您可以在 class:
public class YourElement : FrameworkElement
{
protected override void OnRender(DrawingContext dc)
{
base.OnRender(dc);
}
}
如果您想明确地重新呈现元素,您可以调用 InvalidateVisual()
方法。