在WinForms和C#中,我似乎无法创建宽度超过65535的控件。如果我将其设置为70.000,则该值将重置为65535。 使用ILSpy挖掘Control.Size的源代码,我无法立即找到负责钳位大小的代码。
这是Win32 API或Windows Forms的限制吗?有没有办法解决这个问题,例如:与非托管互操作?
我需要如此大的控件的原因是我将非常长的音频文件的音乐波形绘制到它上面。 (是的,我可以直接绘制波形,没有包含控件;但这需要大量的重构)。我这里不是在谈论绘图代码。显然,只需绘制可见部分,但事实是我想要一个宽达200.000像素的控件。
答案 0 :(得分:10)
这是一个winapi限制。一个非常难的,用例如WM_MOUSEMOVE消息报告鼠标位置,鼠标位置打包到LPARAM参数中。 X位为16位,Y位为16位。
你必须处理它。它不是对例如面板的AutoScrollMinSize属性的限制。无论如何,这就是你在这种情况下总是使用的,开始在AutoScrollPosition上绘画。
答案 1 :(得分:2)
我确实认为它是Windows窗体的限制,事实是,根据您的需要,WPF窗体更适合,因为它允许更大的负载。只是我的意见。