我无法理解使用C#,.NET 3.5和GDI +在自定义控件中创建可滚动区域的正确方法。
Microsoft是否有任何关于正确方法的文档?网上的任何地方都有一个不错的入门书吗?
我的担忧主要是:如果我在内存中创建一个大型图形画布,那么画布可以(应该是多大)的具体细节是什么?有哪些性能考虑因素?我应该提前渲染多少可滚动区域?
例如,如果我从预先存在的数据渲染一个非常大的图形绘图,我应该将整个绘图渲染到图形内存然后将其blit到“可滚动”区域吗?或者,是否会耗尽可用的图形相关内存并开始写入页面文件?
澄清:
例如,每次滚动时,通过重新渲染所有元素,您的web-broser不会“重绘”客户区。页面的静态元素将渲染一次到大表面,当您移动滚动条时,只需修改预渲染的起始偏移。
这就是我想要的那种行为。我不想在绘制事件上“绘制我的滚动范围的起始值和结束值之间的内容”。
答案 0 :(得分:1)
如果您正在谈论WinForms - 从ScrollableControl派生您的控件。定义客户端大小,并在OnPaint中绘制适当的部分。
控件处理所有滚动详细信息