Draw 이벤트에 응답하여 WinForms ToolTip 컨트롤의 모양을 사용자 지정하고 있습니다. 툴팁의 모퉁이를 둥글게하고 싶습니다. 처음으로 툴팁이 표시되고 모든 것이 완벽 해지도록 모든 것이 작동하도록했습니다. 후속 디스플레이에서 둥근 사각형의 채워지지 않은 부분은 처음 툴팁이 표시 될 때 배경에 있던 부분을 계속 갖습니다. 문제의비 직사각형 주위의 투명도 (owner draw) ToolTip 컨트롤?
스크린 샷 (I 분명히 인라인을 넣어 권한이 없습니다) : 나는 그것을 원하는 경우 사진에서 http://tinypic.com/r/30xa3w9/3
, 당신은 왼쪽 상단 모서리에 왼쪽 오버 유물을 볼 수 있습니다 다만 같이, (회색 배경을 표시하는) 투명하게 :
:tinypic.com/r/mvn8eo/3 (도 권리가 하나 이상의 링크 추가) 여기
하면 도면 코드
private void ToolTip_Draw(object sender, DrawToolTipEventArgs args)
{
args.Graphics.SmoothingMode = SmoothingMode.AntiAlias;
var rect = new RectangleF(0, 0, args.Bounds.Width, args.Bounds.Height);
using (var backBrush = new LinearGradientBrush(rect, Color.Silver, this.BackColor, 90))
{
using (var path = GetRoundedRectangle(rect, 10, 4, 4, 1))
{
args.Graphics.FillPath(backBrush, path);
args.DrawText();
}
}
}
GetRoundedRectangle 함수 (포함되지 않음)는 원하는 둥근 기하 도형에 대해 적절한 GraphicsPath를 계산합니다.
BackColor를 Color.Transparent로 설정 한 후 args.DrawBackground에 대한 호출을 추가하려고했지만 배경의 진한 회색으로 실제로 채워지는 것이 아니라 실제로 투명하게 보이기 때문에 일반적인 " WinForms의 "시뮬레이션 된"투명성을 제공합니다.
보조 메모로 IsBalloon이 true로 설정된 사용자 지정되지 않은 도구 설명이 올바른 투명도로 사각형이 아닙니다.
누구든지이 문제에 대한 해결책을 제안 할 수 있습니까?
ToolTip은 컨트롤이 아니지만 단지 구성 요소이므로 Region 속성이 없습니다. 이 일을하는 간접적 인 방법이 있습니까? –
@ 에릭 스미스, 음, Handle 속성이있어서 SetWindowRgn (pinvoke.net 참고)을 사용할 수 있습니다. NativeWindow 클래스의 도움을 받아 완전히 관리되는 코드에서 수행하는 것이 가능할 수도 있지만 가치가있는 것보다 더 많은 작업 일 것입니다. –
SetWindowRgn 접근 방식을 시도하고 작동하도록했습니다. 큰 문제는 그 지역이 부드럽게되지 않는다는 것입니다. 그래서 툴팁은 불쾌하게 들쭉날쭉 한 가장자리를 가지고 있습니다. 내가 다른 곳에서 읽은 것에서는 지역을 부드럽게하는 것이 불가능할 수도 있습니다. –