問題を解決する最も簡単な方法は、「グリッド スナップ」動作を実装することです。
基本的に、フレームには、ユーザーが UI 要素を追加できる定義済みの領域 (グリッド セル) しかありません。ユーザーが UI 要素をフレームにドロップした場合、グリッド内のどこに主にドロップするかを検出する必要があります (2 つ以上のグリッド セルに均等にドロップする場合は、独自の動作を選択できます)。このように、2 つの UI 要素間の衝突をまったく検出する必要はありません。
編集
ええと、私は確かに、あなたがコメントで概説したケースを予想していませんでした. オブジェクトのサイズがそれほど異なる場合は、「グリッド スナップ」が状況に適用できない可能性があることを認めます。つまり、多くの空きスペースが発生する可能性があります。回答を作成したとき、Visual Basic に沿った何かを考えていました (覚えている限り、VB は何らかのグリッド スナップ動作を実装しています)。
些細な点ですが、ユーザーが UI 要素の配置を正確に制御できるようにすることで、ユーザーの最善の利益を考えているかもしれませんが、ユーザーがプログラムとどのようにやり取りするかを考えてください。マウスを使用して画面上に正確に配置することは罰である可能性があり、逆効果になる可能性があります。ただし、ユーザーが常にタッチスクリーン デバイスを使用することが保証されている場合、同じことは言えません。