做的第一个winform,现在出现了个问题无法解决。
主窗口有设置透明度项,点击弹出设置透明度的窗口。
我用trackBar控件控制透明度,传到xml里,再在主窗口中读取xml。
我这样做碰到两个问题。
1,无法实现像QQ皮肤那样的自定义透明度的实时预览。
2,必须把程序关了再启动才能看到上次设置的透明度。
头疼,个有哪位大哥能帮帮我?谢谢了!!
主窗口有设置透明度项,点击弹出设置透明度的窗口。
我用trackBar控件控制透明度,传到xml里,再在主窗口中读取xml。
我这样做碰到两个问题。
1,无法实现像QQ皮肤那样的自定义透明度的实时预览。
2,必须把程序关了再启动才能看到上次设置的透明度。
头疼,个有哪位大哥能帮帮我?谢谢了!!
我等代码!!
[DllImport("user32.dll")]
public extern static bool SetLayeredWindowAttributes(IntPtr hWnd, Int32 crKey, byte bAlpha, int dwFlags);
public const int LWA_ALPHA = 0x0002;SetLayeredWindowAttributes(窗口句柄, 0, Convert.ToByte(通明度(0~100)), LWA_ALPHA);
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.TranForm = this; // << 将主窗体传递给子窗体控制
form2.ShowDialog();
form2.Dispose();
} private void Form1_Load(object sender, EventArgs e)
{
Text = Opacity.ToString();
}
}
子窗体代码:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private Form tranForm;
public Form TranForm
{
get { return tranForm; }
set
{
trackBar1.Minimum = 0;
trackBar1.Maximum = 100;
tranForm = value;
if (tranForm != null)
trackBar1.Value = (int)(tranForm.Opacity * trackBar1.Maximum);
}
} private void trackBar1_Scroll(object sender, EventArgs e)
{
if (tranForm == null) return;
tranForm.Opacity = (double)((TrackBar)sender).Value / ((TrackBar)sender).Maximum;
}
}