日期:2014-05-17  浏览次数:20873 次

pictureBox上面放置透明label的问题
winform程序中,有一个pictureBox背景色设置为黑色,用来显示预览视频,现在pictureBox上面放置几个label控件,当pictureBox上预览到视频图像时,label控件透明显示不遮挡视频图像,lable的作用是调整摄像头的移动,现在就是没有办法实现label透明显示,网上也找了很多办法,都不能达到预想的效果,请高手指点,多谢了!

------解决方案--------------------
没有办法,变通的做法是直接在视频窗口绘制文字。
------解决方案--------------------
 label1.Parent = pictureBox1;
            label1.Location = new Point(label1.Location.X - pictureBox1.Location.X, label1.Location.Y - pictureBox1.Location.Y);
            label1.BackColor = Color.Transparent;

------解决方案--------------------
直接在屏幕的DC上绘制文本,就象某些听歌软件能够直接显示歌词那样。
------解决方案--------------------
下面这段代码可以直接在屏幕上绘制文本,但绘制上去的内容在重绘时就消失了,如果要持久显示可能需要不断刷新,仅供参考,希望对你有帮助。


        private void button1_Click(object sender, EventArgs e)
        {
            Point pt = pictureBox1.Parent.PointToScreen(pictureBox1.Location);
            pt.Offset(30, 10);
            Rectangle bounds = new Rectangle(pt, new Size(300, 50));
            Font font = new Font("宋体", 18f);
            DrawString("Hello, world!", bounds, font, Color.Red);
            font.Dispose();
        }

        [DllImport("user32.dll")]
        private static extern IntPtr GetDC(IntPtr hWnd);

        [DllImport("user32.dll")]