.NET 3.5에서 투명 컨트롤 만들기
이미지 편집 응용 프로그램에서 도구 선택 시 투명한 직사각형을 만들고 싶습니다. .NET 3.5에서 투명성을 얻으려면 특별한 고려 사항이 필요합니다.
투명성을 활성화하려면 ControlStyles.SupportsTransparentBackColor 스타일을 true로 설정하고 컨트롤의 배경색을 Color.Transparent로 설정합니다. 그러나 이것이 작동하지 않으면 투명도를 효과적으로 처리하는 사용자 정의 컨트롤을 사용해야 할 수도 있습니다.
다음은 필요한 기능을 제공하는 사용자 정의 TranspCtrl입니다.
public class TranspCtrl : Control { public bool drag = false; public bool enab = false; private int m_opacity = 100; private int alpha; public TranspCtrl() { SetStyle(ControlStyles.SupportsTransparentBackColor, true); SetStyle(ControlStyles.Opaque, true); this.BackColor = Color.Transparent; } public int Opacity { get { if (m_opacity > 100) { m_opacity = 100; } else if (m_opacity < 1) { m_opacity = 1; } return this.m_opacity; } set { this.m_opacity = value; if (this.Parent != null) { Parent.Invalidate(this.Bounds, true); } } } protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle = cp.ExStyle | 0x20; return cp; } } protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; Rectangle bounds = new Rectangle(0, 0, this.Width - 1, this.Height - 1); Color frmColor = this.Parent.BackColor; Brush bckColor = default(Brush); alpha = (m_opacity * 255) / 100; if (drag) { Color dragBckColor = default(Color); if (BackColor != Color.Transparent) { int Rb = BackColor.R * alpha / 255 + frmColor.R * (255 - alpha) / 255; int Gb = BackColor.G * alpha / 255 + frmColor.G * (255 - alpha) / 255; int Bb = BackColor.B * alpha / 255 + frmColor.B * (255 - alpha) / 255; dragBckColor = Color.FromArgb(Rb, Gb, Bb); } else { dragBckColor = frmColor; } alpha = 255; bckColor = new SolidBrush(Color.FromArgb(alpha, dragBckColor)); } else { bckColor = new SolidBrush(Color.FromArgb(alpha, this.BackColor)); } if (this.BackColor != Color.Transparent | drag) { g.FillRectangle(bckColor, bounds); } bckColor.Dispose(); g.Dispose(); base.OnPaint(e); } protected override void OnBackColorChanged(EventArgs e) { if (this.Parent != null) { Parent.Invalidate(this.Bounds, true); } base.OnBackColorChanged(e); } protected override void OnParentBackColorChanged(EventArgs e) { this.Invalidate(); base.OnParentBackColorChanged(e); } }
이를 활용하여 사용자 정의 컨트롤을 사용하면 이미지 편집기 내에서 투명한 직사각형이나 기타 컨트롤을 만들 수 있습니다.
위 내용은 .NET 3.5에서 투명한 컨트롤을 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!