我想弄清楚如何清除我在桌面上創建的繪圖。聽說最好的方法是使用this.Invalidate()。無法找到無效的方法爲MainWindow
問題是當我將其添加到代碼Visual Studio無法識別該方法。我正在使用VS Express for Desktop 2012和.NET 4.5。
任何想法?
錯誤消息:
「WpfApplication1.MainWindow」不包含 「的Invalidate」的定義和沒有擴展方法「的Invalidate」接受型的第一 參數「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更新桌面。
例如RECT = 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 * /);
任何想法?
在P/Invoke的聲明,您需要無效_desktop window_,使用本機API調用。 – SLaks
您使用的是「WPF」,而不是「Winforms」。 –
[Invalidate own WPF control]可能的重複(http://stackoverflow.com/questions/8575203/invalidate-own-wpf-control) –