1

関連する XOR メソッドを使用せずに、ビジュアル オブジェクト(選択したエッジ、線など)の選択インジケーターを描画する別の方法を探しました。その理由は、不要な XOR 処理の「アーティファクト」、可逆性がビットマップに適用されないこと、実際の視覚的な外観を制御できないこと、および速度が遅いことです。ControlPaint.DrawReversibleFrame

一方で、再描画にはかなりのコストがかかる可能性があるため、ユーザーが 1 つまたは 2 つのオブジェクトの選択を解除したいと判断した場合、シーン全体 (実際にはマップ) を再描画する必要は避けたいと考えています。

したがって、私が見ることができる唯一の代替手段は、いくつかの基本的な描画ロジックを に直接実装することですが、変更前のピクセルの以前の内容Bitmapを保存します。次に、(理論的には)ユーザーがそのエッジの選択を解除することを選択した場合、選択したエッジの長方形の古い内容を再適用できます。

私の質問は、これが良い考えだと思うか、それとも私の問題 (GDI+ 内) に対する他の代替案があるかどうかです。

前もって感謝します

4

2 に答える 2

1

選択インジケーターが選択されていないオブジェクトの上に描画されている場合は、2 つのビットマップを使用して、選択されていないすべてのオブジェクトを背景に描画し、選択インジケーターをもう一方に描画して、両方を画面にペイントできます。
それ以外の場合は、インジケーターだけでなく、選択したオブジェクトをレンダリングすることを除いて、同じことができます。

于 2010-01-04T19:57:46.360 に答える
0

「関心のある」四角形のみをオフスクリーン バッファに格納します。そして、フォーカスが失われたときに再描画します。. . または、メモリ内のデータに基づいて正常に表示される部分だけを再描画できる場合は、問題ありません。そうでなければ、あなたはそれの要点を持っているようです。

于 2009-11-26T04:55:17.013 に答える