ホームページ > バックエンド開発 > C++ > 他のコントロールと重ならないテキストを含む半透明の円形コントロールを作成するにはどうすればよいですか?

他のコントロールと重ならないテキストを含む半透明の円形コントロールを作成するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-22 15:56:09
オリジナル
339 人が閲覧しました

How to Create a Translucent Circular Control with Text That Doesn't Overlap Other Controls?

テキスト付きの半透明の円コントロール

質問

プロジェクトで、サークル コントロールを追加し、中央にテキストを表示する必要があります。

私の問題は、円が小さすぎるため、サイズを変更すると他のコントロールと重なってしまうということです。円を正方形と同じ幅にしたいです。

または、コントロールの背景を透明にする方法は?

解決策

これは、半透明にすることができる Control から派生したカスタム コントロールです。

インターフェイスは、複数の数字を含めることができる色付きの円です。

このコントロールは次のカスタム プロパティを公開します:

不透明度 : コントロールの背景の不透明度レベル [0, 255]
InnerPadding (内部パディング) : 円の境界の内側の四角形とコントロールの境界の間の距離を定義します。
FontPadding (フォント パディング) : テキストと内側の四角形の間の距離。

CreateParams をオーバーライドし、ExStyle |= WS_EX_TRANSPARENT; を設定することで透明度を実現します。

Control.SetStyle() メソッドはコントロールの動作を変更するために使用され、次の ControlStyle を追加します:

ControlStyles.Opaque: コントロールの背景が描画されないようにし、システムによって管理されないようにします。 CreateParams と組み合わせて使用​​すると、コントロールの拡張スタイルを WS_EX_TRANSPARENT に設定すると、コントロールが完全に透明になります。
ControlStyles.SupportsTransparentBackColor: コントロールは背景色のアルファ値を受け入れます。 ControlStyles.UserPaint も設定しない場合、透明度のシミュレートには使用されません。他の方法で自分たちで行います。

それがどのように機能するかを確認するには、新しいクラス ファイルを作成し、その中のすべてのコードをこのコードに置き換え、名前空間を保持してプロジェクト/ソリューションをビルドします。

新しいカスタム コントロールがツールボックスに表示されます。それをフォーム上にドラッグ アンド ドロップします。必要に応じてカスタム プロパティを変更します。

コントロールの視覚的表現:

注意と免責事項

  • これはプロトタイプ コントロールであり、カスタム デザイナーがありません (ここに投稿できません。コードが多すぎ、フレームワークにも関連付けられています)。
  • ここで説明されているように、フォームまたは他のコンテナー内の他のコントロールと完全に重なることがあります。この簡略化された実装では、一部の重複は処理されません。
  • このフォントには円形領域の中央へのテキストの配置を簡素化するベースラインがあるため、フォントは Segoe UI にハードコーディングされています。
  • 他のフォントには異なるベースラインがあり、より複雑な処理が必要です。

以上が他のコントロールと重ならないテキストを含む半透明の円形コントロールを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート