使用.Net组件开发winform应用,需要在地图界面上增加一个透明的图片背景,一直带有白色的背景,但是去掉地图组件图片就是透明的。
图一,在地图组件中的不透明
private void Form1_Load(object sender, EventArgs e)
{
// this.m_panelScene.BackColor = Color.Black;
// this.pictureBox1.BackColor = Color.White;
// this.pictureBox1.Parent = m_panelScene;
// pictureBox2.Parent = 父容器
// this.pictureBox1.BackColor = Color.White;
// this.pictureBox1.BackColor.tr = Color.White;
gongnengPanel1.BackColor = Color.White;
m_sceneControl = new SuperMap.UI.SceneControl();
m_sceneControl.Dock = DockStyle.Fill;
this.m_panelScene.Controls.Add(m_sceneControl);
//pictureBox1.BackColor = Color.Transparent;
//panel1.BackColor = Color.Transparent;
Console.WriteLine("Parent===" + pictureBox1.Parent);
m_sampleRun = new SampleRun(m_sceneControl);
this.WindowState = FormWindowState.Maximized;
}
图二、去掉地图组件后恢复透明
复杂界面为什么不用WPF来写呢,后台逻辑基本兼容,只是前台界面不一样,WPF里面这种情况就很好处理,可以通过设置Opacity属性来出来,Winform不知道有没有这个属性
容器填充色改为透明,试试行不
这个很正常,在Winform中的透明就是将父控件的背景颜色赋给子控件来实现的伪透明,解决办法一是用WPF来写,二是不要叠在地图控件上,在上边单独留个地方放这个透明的图片,第三种方法就是实时去读你的地图控件,将其截图,再去截对应位置的小图,然后将这张小图作为你透明控件的背景,也是伪透明,会损耗大量资源,个人认为不值当,建议用WPF来做。