我正在试图弄清楚如何清除我在桌面上创建的绘图。听说最好的方法是使用this.Invalidate()。
问题是当我将其添加到代码时,Visual Studio无法识别该方法。我正在使用VS Express for Desktop 2012和.NET 4.5。
有什么想法吗?
错误讯息:
'WpfApplication1.MainWindow'不包含。的定义 '无效'且没有扩展方法'无效'接受第一个 可以找到'WpfApplication1.MainWindow'类型的参数(是吗? 缺少using指令或程序集引用?)
以下是代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
System.Windows.Forms.Timer _timer = new Timer() { Interval = 1, Enabled = true };
_timer.Tick += new EventHandler(Timer_Tick);
}
private void Timer_Tick(object sender, EventArgs e)
{
using (Graphics g = Graphics.FromHwnd(IntPtr.Zero))
{
System.Drawing.Point pt = System.Windows.Forms.Cursor.Position;
g.DrawEllipse(Pens.Black, pt.X - 10, pt.Y - 10, 20, 20);
}
this.Invalidate();
}
}
编辑:
每个人都要感谢你们。
我尝试过使用RedrawWindow()但程序在每次开始测试时都会崩溃。有任何想法吗?我正在尝试使用此矩形rc更新桌面。
e.g。
RECT rc = new RECT(pt.X - 20,pt.Y - 20,pt.X + 20,pt.Y + 20);
RedrawWindow(IntPtr.Zero,rc,IntPtr.Zero,0x0400 / * RDW_FRAME * / | 0x0100 / * RDW_UPDATENOW * / | 0x0001 / * RDW_INVALIDATE * /);
有什么想法吗?
答案 0 :(得分:1)
WPF中不是InvalidateVisual()吗?
请参阅http://msdn.microsoft.com/en-us/library/system.windows.uielement.invalidatevisual.aspx
答案 1 :(得分:1)
Invalidate()
方法是 Windows窗体方法,但您使用的是WPF。
在WPF中,使用InvalidateVisual()
,WPF等效的Windows窗体“Invalidate()
答案 2 :(得分:1)