4

WinFormsとC#では、65535より広いコントロールを作成できないようです。70.000に設定すると、値は65535にリセットされます。ILSpyでControl.Sizeのソースを調べたところ、責任のあるコードをすぐに見つけることができませんでした。サイズをクランプするため。

では、これはWin32 APIまたはWindowsフォームの制限ですか?管理されていない相互運用など、これを回避する方法はありますか?

このような大きなコントロールが必要な理由は、非常に長いオーディオファイルの音楽波形をその上に描画するためです。(はい、コントロールを含まずに波形を直接描画できますが、多くのリファクタリングが必要になります)。ここでは描画コードについて話していません。明らかに、目に見える部分だけを描く必要がありますが、200.000ピクセルの幅のコントロールが欲しいということです。

4

2 に答える 2

10

これは、winapiの制限です。かなり難しいものですが、マウスの位置は、たとえば、マウスの位置がLPARAM引数にパックされたWM_MOUSEMOVEメッセージで報告されます。Xロケーション用に16ビット、Yロケーション用に16ビット。

あなたはそれに対処しなければならないでしょう。これは、たとえばパネルのAutoScrollMinSizeプロパティに対する制限ではありません。とにかく、この場合は常にこれを使用します。AutoScrollPositionでペイントを開始します。

于 2012-07-16T07:20:47.567 に答える
2

Windowsフォームの制限だと思いますが、必要に応じて、WPFフォームの方が、より大きな負荷が可能になるため、より適していると思います。私の意見です。

于 2012-07-16T06:55:11.607 に答える