WinForms绘制周期文档?
WinForms中是否有关于绘制周期的文档 在Windows中编程时,绘制周期通常采用以下形式:WinForms绘制周期文档?,winforms,paint,Winforms,Paint,WinForms中是否有关于绘制周期的文档 在Windows中编程时,绘制周期通常采用以下形式: sent a WM_PAINT message { call BeginPaint(&paintStruct) //BeginPaint sends WM_NCPAINT and WM_ERASEBKGND sent a WM_ERASEBKGND message { i can: - allow defau
sent a WM_PAINT message
{
call BeginPaint(&paintStruct)
//BeginPaint sends WM_NCPAINT and WM_ERASEBKGND
sent a WM_ERASEBKGND message
{
i can:
- allow default processing (Windows will fill the area with the default background color (e.g. white)
- erase and background myself (e.g. a gradient) and prevent default processing
- do nothing (letting whatever was there before me stay there) and prevent default processing
}
perform whatever painting i desire on
paintStruct.hDC (Device Context)
paintStruct.rcPaint (Invalid Rectangle)
that was populated into paintStruct during BeginPaint
call EndPaint()
}
这些都记录在MSDN上:
我找不到任何关于WinForms及其绘制周期的文档。我可以随机找到名称为paint的方法和事件:
受保护的方法引发绘制事件。
受保护的方法引发绘制事件。
受保护的方法引发指定控件的绘制事件。
公共活动
受保护的方法引发指定控件的PaintBackground事件。
受保护的方法绘制控件的背景。
注意:忽略没有PaintBackground事件的事实
是否有文件说明这些实体之间的设计关系?WinForms中有关于绘制周期的文档吗?这就是您要找的吗 OP Edit:当Microsoft实施下一轮链接中断时,文档的位置为: MSDN技术资源库 开发工具和语言 VisualStudio2010 Visual Studio 创建基于Windows的应用程序 Windows窗体 Windows窗体入门 Windows窗体控件 使用.NET Framework开发自定义Windows窗体控件 自定义控件绘制和渲染
它与本机Windows绘制周期没有本质上的区别,相应的Windows消息会引发.NET事件。从底部开始,这些消息由窗口管理器或应用程序本身调用Invalidate生成。.NET版本为Control.Invalidate。Windows跟踪窗口的更新区域,决定是否传递WM_PAINT、WM_NCPAINT和WM_ERASEBKGND消息 打开ControlStyles.UserPaint样式时,Control.WndProc会识别WM_PAINT和WM_ERASEBKGND消息。它调用虚拟OnPaint和OnPaintBackground方法。派生控件可以根据需要重写这些方法以自定义绘制。并且必须调用基方法。最终到达Control.OnPaint/Background方法,该方法触发Paint和PaintBackground事件,以允许其他代码自定义绘制
唯一的另一个缺点是双缓冲,由DoubleBuffered属性启用。Winforms为控件创建位图缓冲区,并运行OnPaintBackground和OnPaint,传递从该位图创建的图形对象。然后将位图显示在屏幕上。我们开始缺少文档,但是UserPaint文档说如果为false,则不会引发绘制事件。这是否意味着油漆事件未引发?或者这是否意味着不会调用OnPaint方法?“我注意到不透明”如果为true,则控件绘制为不透明且背景未绘制,这将对OnPaintBackground产生任何影响。我看到了更多:Allpaintingwmpaintoptimizeddoublebuffer。我将接受Jason的答案。严格地说,我要求提供文件。虽然MSDN文档可能非常不足,但这正是我所寻找的。虽然这个答案非常有用,但是+1作为MSDN的补充。