protected override void Dispose(bool disposing) { base.Dispose(disposing); if (disposing) { if (btnAlpha != null) { btnAlpha.Dispose(); } if (dialogAlpha != null) { dialogAlpha.Dispose(); } btnAlpha = null; dialogAlpha = null; } }
void btnAlpha_Click(object sender, EventArgs e) { if (dialogAlpha == null) { dialogAlpha = new AlphaDialog(this); panelAlpha = new AlphaColorPanel(); panelAlpha.AlphaChanged += panelAlpha_AlphaChanged; dialogAlpha.Controls.Add(panelAlpha); dialogAlpha.Text = "투명도"; //dialogAlpha.StartPosition = FormStartPosition.CenterParent; // doesn't work dialogAlpha.StartPosition = FormStartPosition.Manual; dialogAlpha.ClientSize = panelAlpha.PreferredSize; Size sz = dialogAlpha.Size; RECT r = new RECT(); GetWindowRect(handle, ref r); dialogAlpha.Location = new Point(r.Left + ((r.Right - r.Left) - sz.Width) / 2, r.Top + ((r.Bottom - r.Top) - sz.Height) / 2); } Color color = Color.FromArgb(alpha, _color); panelAlpha.Color = color; panelAlpha.SetAlpha(color.A); if (!dialogAlpha.IsHandleCreated || !dialogAlpha.Visible) { dialogAlpha.Visible = false; // sometimes IsHandleCreated is reset, so Visible must be reset dialogAlpha.Show(new SimpleWindow { Handle = handle }); } else { if (dialogAlpha.WindowState == FormWindowState.Minimized) { dialogAlpha.WindowState = FormWindowState.Normal; } dialogAlpha.Activate(); dialogAlpha.BringToFront(); dialogAlpha.Focus(); } }