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

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

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

...全文
4742 18 打赏 收藏 转发到动态 举报
写回复
用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了,可是还是不好使

源码下载地址: https://pan.quark.cn/s/a4b39357ea24 【运算单元构造实验报告】运算单元是计算机硬件系统中的关键构成部分,主要承担执行算术运算和逻辑运算的任务。在本次实验中,我们着重探讨了带有累加器的运算单元的设计,涵盖了溢出识别、有符号数值与无符号数值运算的差异性,以及采用补码方式进行的加法与减法运算的实现机制。 一、实验目标 1. 掌握运算单元的基本构造,理解带有累加器的运算单元的具体实现途径。 2. 学习并领会溢出检测的机制,能够设计并构建溢出检测电路,用以判定运算结果是否超出了数据类型的表示范畴。 3. 明辨有符号数值和无符号数值运算的不同特性,把握它们在运算过程中各自的处理方法。 4. 熟练掌握基于补码方式的加法与减法运算的执行,理解补码形式下的溢出判定准则。 5. 熟悉运算单元内部的数据传输路线,明晰数据在运算过程中的流转路径。 6. 设计一个能够支持有符号数值与无符号数值运算、补码加法/减法运算以及有符号数值溢出检测的运算单元电路。 二、实验仪器 采用JZYL—Ⅱ型计算机组成原理实验装置,配备2片74181运算单元芯片作为算术逻辑单元(ALU),2片74LS373用作八位D型锁存器,并辅以一些基础门电路和多路选择器来完成电路设计。 三、实验内容 1. 运用片74181构建一个8位运算单元,负责处理数据的高4位与低4位。 2. 设计并实现溢出检测电路,确保在有符号数值与无符号数值的加法运算中均能准确识别溢出状况。 3. 通过74LS373增加累加器功能,使运算结果得以保存。 4. 将所有设计整合,利用多路选择器来支持有符号数值与无符号数值的加法/减法运算。 四、实验电路 1. 8位运算单元由2片74181构成,通过控制...

111,129

社区成员

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

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

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