【问题标题】:What is WPF equivalent of Windows Forms Region.Xor in Paint event?在 Paint 事件中,WPF 等效于 Windows 窗体 Region.Xor 是什么?
【发布时间】:2013-09-06 23:10:15
【问题描述】:

我正在尝试将此 WinForms 代码移至 WPF,但没有 Paint 事件。

private void OnPaint(object sender, PaintEventArgs e)
{
    var region = new Region(new Rectangle(0, 0, this.Width, this.Height));
    var rectangle = new Rectangle(0, 0, 50, 50);
    region.Xor(rectangle);
    e.Graphics.FillRegion(Brushes.Black, region);
}

【问题讨论】:

  • 欢迎来到 SO!我已编辑您的代码以使其正确显示。
  • 请阅读Rachel's Excellent Explanation 了解从 winforms 升级到 WPF 时的要求。

标签: c# c wpf paint workflow-foundation


【解决方案1】:

WPF 在图形方面不像 WinForms 那样工作。您实际上无法绘制形状,您必须将它们放入您的内容中。

Geometry 应该可以很好地替代Region。您可以使用Geometry.Combine 并指定GeometryCombineMode.Xor 来复制您的绘图代码。

RectangleGeometry 是制作矩形的方法。其他形状也有类似的类。

要实际显示Geometry,请将其放入Path,它可以用作控件的内容。

【讨论】:

  • 您实际上可以使用OnRender 覆盖来绘制形状(以及几何对象)。 Path 就是这样做的。要记住的重要一点是 WPF 使用保留模式图形(与 GDI 的立即模式相反)。
猜你喜欢
  • 2010-10-18
  • 2010-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-04
相关资源
最近更新 更多