角が丸い、サイズ変更可能なズーム可能な UserControl での視覚的なアーティファクトの除去
この問題では、角が丸く、色付きの境界線を持つ UserControl で視覚的なアーティファクトが発生します。ズームインまたはズームアウトします。ズームアウトすると境界線の右側が非表示になり、ズームインすると右側に複数の黄色の境界線が表示されます。
問題の説明
視覚的なアーティファクトは以下から発生します。 UserControl の領域の定義方法と境界線の描画方法。リージョンの作成時に、その外側の境界線はアンチエイリアス処理されず、リージョンの外側にペイントされた境界線の外側の部分が失われます。
推奨される解決策
この問題を解決するために、修正された描画アプローチが提案されています:
コードサンプル
以下のコード以下の変更を示します。
using System.Drawing; using System.Drawing.Drawing2D; public class RoundedControl : UserControl { // ... Your existing code // ... Added code suggested in the solution private void UpdateRegion() { GraphicsPathWithBorder = RoundedCornerRectangle(ClientRectangle); Region = new Region(GraphicsPathWithBorder); Invalidate(); } }
ソリューションの利点
注: コントロールの一部が境界線を越えないように、RoundedCornerRectangle メソッドの CurveSize を調整する必要がある場合があります。
以上が角が丸い、サイズ変更およびズーム可能な UserControls の視覚的なアーティファクトを除去するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。