2012-02-08 62 views
3

我正试图在F#中实现双缓冲。我遇到的所有示例都是C#。F#中的双缓冲:闪烁的处理是什么?

let r = form.DisplayRectangle 
    let buffer = new Bitmap(r.Width,r.Height) 
    form.DrawToBitmap(buffer,r) 
    form.BackgroundImage <-buffer 
    form.Invalidate() 

尽管问题是一个“简单”的修复,但私有变量并未在F#中公开。相反,我必须在C#中初始化表单。在F#中,必须有一种方法来暴露这个表单的私有变量(看起来这是一件小事)。

+1

您似乎已经提交许多修改其显著改变你的题中之义。请注意这对那些已经回答了问题的人来说是不公平的;因为有人可能会来回投票,因为它会*显示*他们没有回答你的问题。 – 2013-04-05 20:40:42

回答

4

form.DoubleBuffered <- true 

然后无闪烁

+1

问题:双缓冲区没有显示出来,编译器说它是一个私有变量... – user1111 2012-02-09 00:24:09

+0

'System.Windows.Forms.Form' [肯定有](http://msdn.microsoft.com/zh-cn/ -us/library/system.windows.forms.form.aspx)'DoubleBuffered'属性... – 2012-02-09 00:43:07

+4

通常最容易在Form上创建一个薄包装器,并在构造器中覆盖它 – 2012-02-09 00:44:09