Winforms F#中的双缓冲:如何处理闪烁?
我正在尝试在F#中实现双缓冲。我遇到的所有例子都是CWinforms F#中的双缓冲:如何处理闪烁?,winforms,f#,Winforms,F#,我正在尝试在F#中实现双缓冲。我遇到的所有例子都是C 让r=form.DisplayRectangle let buffer=新位图(r.宽度,r.高度) 表格.DrawToBitmap(缓冲区,r) form.BackgroundImageDo form.DoubleBuffered问题:双缓冲区未显示,编译器说它是一个私有变量…System.Windows.Forms.FormaDoubleBuffered属性…通常最容易在Form上创建一个薄包装并在constructor@JoelMuel
让r=form.DisplayRectangle
let buffer=新位图(r.宽度,r.高度)
表格.DrawToBitmap(缓冲区,r)
form.BackgroundImageDo
form.DoubleBuffered问题:双缓冲区未显示,编译器说它是一个私有变量…System.Windows.Forms.Form
aDoubleBuffered
属性…通常最容易在Form
上创建一个薄包装并在constructor@JoelMueller-propertyy受保护,因此您只能从继承的类访问它-有关详细信息,请参阅我的其他注释这是最简单的解决办法。我想我从来没有注意到,因为在C#WinForms工作中,您创建的每个表单都是从表单
继承的。您似乎提交了许多编辑,这些编辑显著地改变了问题的含义。请注意,这对那些已经回答了问题的人是不公平的;有些人可能会来投票,因为他们似乎没有回答你的问题。
let r = form.DisplayRectangle
let buffer = new Bitmap(r.Width,r.Height)
form.DrawToBitmap(buffer,r)
form.BackgroundImage <-buffer
form.Invalidate()
form.DoubleBuffered <- true