4

在 WinForms 和 C# 中,似乎我无法创建宽于 65535 的控件。如果将其设置为 70.000,则该值将重置为 65535。使用 ILSpy 挖掘 Control.Size 的源代码,我无法立即找到负责的代码用于夹紧尺寸。

那么这是 Win32 API 或 Windows 窗体的限制吗?有没有办法解决这个问题,例如使用非托管互操作?

我需要这么大的控件的原因是我在它上面绘制了非常长的音频文件的音乐波形。(是的,我可以直接绘制波形,无需包含控件;但这需要大量重构)。我不是在这里谈论绘图代码。显然,只需要绘制可见部分,但问题是我想要一个宽度为 200.000 像素的控件。

4

2 回答 2

10

这是一个winapi限制。一个相当困难的问题是,鼠标位置通过 WM_MOUSEMOVE 消息报告,鼠标位置被打包到 LPARAM 参数中。X 位置为 16 位,Y 位置为 16 位。

你将不得不处理它。它不是对例如面板的 AutoScrollMinSize 属性的限制。无论如何,在这种情况下你总是会使用它,从 AutoScrollPosition 开始绘画。

于 2012-07-16T07:20:47.567 回答
2

我确实认为它是 Windows 窗体的一个限制,事实是,对于您的需要,WPF 窗体会更合适,因为它允许更大的负载。只是我的观点。

于 2012-07-16T06:55:11.607 回答