> 백엔드 개발 > 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿