C# winform怎么让pictruebox在其他控件上面背景透明

Swang_1988 2014-09-04 09:54:30
http://zhidao.baidu.com/question/1732741080008757587.html#

图片上传不上去.只有给个链接了.唉..
窗体中一个button 一个pictruebox, 其中pictruebox里面的图片是gif彩色方边框,中间是透明的,我想要透过彩色方边框看到后面的完整button

...全文
4634 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧_槽 2014-09-04
  • 打赏
  • 举报
回复
这么复杂你应该做wpf的。
失落的神庙 2014-09-04
  • 打赏
  • 举报
回复
如果只是有背景 很好弄


引用 5 楼 yuwenge 的回复:
gif换成png

后就是这样子的效果







PS:我用了之后是这样子。你们用了之后也是这样子。没有加一点特效。

如果要后面显示控件。那还得把控件画进去 背景显示
失落的神庙 2014-09-04
  • 打赏
  • 举报
回复
失落的神庙 2014-09-04
  • 打赏
  • 举报
回复


思路有点复杂。

Point point = new Point(0, 0);
PictureBox p = pictureBox1;
point = pictureBox1.Location;
Bitmap b = new Bitmap(panel1.Width, panel1.Height);
panel1.Controls.Remove(p);
panel1.DrawToBitmap(b, new Rectangle(0, 0, b.Width, b.Height));
pictureBox1.BackColor = Color.FromArgb(80, 0, 0, 0);
panel1.BackgroundImage = b;
panel1.Controls.Add(p);
p.Location = point;
p.BringToFront();
panel1.BackColor = Color.FromArgb(80, 255, 0, 0);


可以自己整理下
卧_槽 2014-09-04
  • 打赏
  • 举报
回复
gif换成png
失落的神庙 2014-09-04
  • 打赏
  • 举报
回复
把picturebox背景色设置为 0,0,0 放在一个panel里 然后把这个panel 的背景色设为 80,0,0,0 使用Color.FormArgb方法 试试
Swang_1988 2014-09-04
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
试试把picturebox的背景色设成Color.Transparent看看


设置了也不好使.如果和Form窗体好使,和button就不好使
Swang_1988 2014-09-04
  • 打赏
  • 举报
回复
设置了也不好使.如果和Form窗体好使,和button就不好使
gxingmin 2014-09-04
  • 打赏
  • 举报
回复
试试把picturebox的背景色设成Color.Transparent看看
於黾 2014-09-04
  • 打赏
  • 举报
回复
引用 16 楼 u012522868 的回复:
这个滚动条滚动时.不好使了.
代码放到On_Paint事件里,而不是load里 每次窗体重绘,你也必须重绘
失落的神庙 2014-09-04
  • 打赏
  • 举报
回复
这种情况你可以使用一个Form 鼠标穿透。 委托跟随主窗体一起移动。
Swang_1988 2014-09-04
  • 打赏
  • 举报
回复
引用 14 楼 u012522868 的回复:
[quote=引用 6 楼 wawd74520 的回复:]
思路有点复杂。

Point point = new Point(0, 0);
PictureBox p = pictureBox1;
point = pictureBox1.Location;
Bitmap b = new Bitmap(panel1.Width, panel1.Height);
panel1.Controls.Remove(p);
panel1.DrawToBitmap(b, new Rectangle(0, 0, b.Width, b.Height));
pictureBox1.BackColor = Color.FromArgb(80, 0, 0, 0);
panel1.BackgroundImage = b;
panel1.Controls.Add(p);
p.Location = point;
p.BringToFront();
panel1.BackColor = Color.FromArgb(80, 255, 0, 0);


可以自己整理下


谢谢,这个方法好使,但是 panel1.BackgroundImage 这个属性我不能改啊,我的panel里面有滚动条,上下一动背景就变了.[/quote]

private void TestForm_Load(object sender, EventArgs e)
{

Bitmap b = new Bitmap(panel1.Width, panel1.Height);
panel1.DrawToBitmap(b, new Rectangle(0, 0, b.Width, b.Height));
pictureBox1.BackColor = Color.FromArgb(0, 0, 0, 0);
panel1.BackgroundImage = b;
}


这个滚动条未滚动时.好使.

这个滚动条滚动时.不好使了.


失落的神庙 2014-09-04
  • 打赏
  • 举报
回复
引用 14 楼 u012522868 的回复:
[quote=引用 6 楼 wawd74520 的回复:] 思路有点复杂。
Point point = new Point(0, 0);
            PictureBox p = pictureBox1;
            point = pictureBox1.Location;
            Bitmap b = new Bitmap(panel1.Width, panel1.Height);
            panel1.Controls.Remove(p);
            panel1.DrawToBitmap(b, new Rectangle(0, 0, b.Width, b.Height));
            pictureBox1.BackColor = Color.FromArgb(80, 0, 0, 0);
            panel1.BackgroundImage = b;
            panel1.Controls.Add(p);
            p.Location = point;
            p.BringToFront();
            panel1.BackColor = Color.FromArgb(80, 255, 0, 0);
可以自己整理下
谢谢,这个方法好使,但是 panel1.BackgroundImage 这个属性我不能改啊,我的panel里面有滚动条,上下一动背景就变了.[/quote] 你要实现什么效果。 按钮就自定义控件做按钮。
Swang_1988 2014-09-04
  • 打赏
  • 举报
回复
引用 6 楼 wawd74520 的回复:
思路有点复杂。
Point point = new Point(0, 0);
            PictureBox p = pictureBox1;
            point = pictureBox1.Location;
            Bitmap b = new Bitmap(panel1.Width, panel1.Height);
            panel1.Controls.Remove(p);
            panel1.DrawToBitmap(b, new Rectangle(0, 0, b.Width, b.Height));
            pictureBox1.BackColor = Color.FromArgb(80, 0, 0, 0);
            panel1.BackgroundImage = b;
            panel1.Controls.Add(p);
            p.Location = point;
            p.BringToFront();
            panel1.BackColor = Color.FromArgb(80, 255, 0, 0);
可以自己整理下
谢谢,这个方法好使,但是 panel1.BackgroundImage 这个属性我不能改啊,我的panel里面有滚动条,上下一动背景就变了.
失落的神庙 2014-09-04
  • 打赏
  • 举报
回复
这段代码放进 button2 点击事件里。
失落的神庙 2014-09-04
  • 打赏
  • 举报
回复


pictureBox1.Visible = false;
Bitmap b = new Bitmap(panel1.Width, panel1.Height);
panel1.DrawToBitmap(b, new Rectangle(0, 0, b.Width, b.Height));
pictureBox1.Visible = true;
//pictureBox1.BackColor = Color.FromArgb(80, 0, 0, 0);
panel1.BackgroundImage = b;


失落的神庙 2014-09-04
  • 打赏
  • 举报
回复
引用 10 楼 u012522868 的回复:
[quote=引用 8 楼 wawd74520 的回复:] 如果只是有背景 很好弄 [quote=引用 5 楼 yuwenge 的回复:] gif换成png
后就是这样子的效果 PS:我用了之后是这样子。你们用了之后也是这样子。没有加一点特效。 如果要后面显示控件。那还得把控件画进去 背景显示[/quote] 你怎么做到的,我已经换成png了,可是还是不好使 [/quote] 额。 重点是panel的背景图片。
Swang_1988 2014-09-04
  • 打赏
  • 举报
回复
引用 8 楼 wawd74520 的回复:
如果只是有背景 很好弄


[quote=引用 5 楼 yuwenge 的回复:]
gif换成png

后就是这样子的效果

PS:我用了之后是这样子。你们用了之后也是这样子。没有加一点特效。

如果要后面显示控件。那还得把控件画进去 背景显示[/quote]

你怎么做到的,我已经换成png了,可是还是不好使

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧