c# 图片透明化
我用c#建立了2个picturebox控件,叠加在一起,给每一个picturebox放上图片。现在要求上面那个picturebox显示的图片要半透明化。最后能同事看到2副...
我用 c# 建立了 2个 picturebox 控件 ,叠加在一起,给每一个picturebox 放上图片。 现在要求 上面那个picturebox显示的图片要半透明化。最后能同事看到2副图的叠加。 光从控件的属性上去调整好想不行。
另外 图片都是png的。纯调整图片透明度好像不能穿透 控件的背景
就是 底下黑色的picturebox 我放一张照片,然后 上面的白色的 picturebox 我要放入透明的 栅格条,使得最后 能直接看到有栅格条的 照片。照片任意换,但栅格条一直在那边。 展开
另外 图片都是png的。纯调整图片透明度好像不能穿透 控件的背景
就是 底下黑色的picturebox 我放一张照片,然后 上面的白色的 picturebox 我要放入透明的 栅格条,使得最后 能直接看到有栅格条的 照片。照片任意换,但栅格条一直在那边。 展开
展开全部
不建议使用PictureBox 对于winform的机制无法这么简单的实现透明
默说最容易的实现方法还是GDI自绘
一个可以测试的代码如下 我定义了一个自定义控件来完成这个工作
其实关键代码不是很多-w-
void Main()
{
Form f = new Form();
f.Size = new Size(600,500);
Button btn1 = new Button();
btn1.Text = "打开图片1";
btn1.Location = new Point(0,0);
f.Controls.Add(btn1);
Button btn2 = new Button();
btn2.Text = "打开图片2";
btn2.Location = new Point(0,30);
f.Controls.Add(btn2);
TrackBar bar1 = new TrackBar();
bar1.Location = new Point(0,60);
bar1.Maximum = 100;
bar1.Value = 100;
f.Controls.Add(bar1);
MyPicBox picBox = new MyPicBox();
picBox.Location = new Point(100,0);
picBox.Size = new Size(600,600);
picBox.Image2Location = new Point(100,100);
f.Controls.Add(picBox);
btn1.Click += (o,e) => {
OpenFileDialog dlg = new OpenFileDialog();
if (dlg.ShowDialog() == DialogResult.OK) {
picBox.Image1 = Image.FromFile(dlg.FileName);
picBox.Invalidate();
}
};
btn2.Click += (o,e) => {
OpenFileDialog dlg = new OpenFileDialog();
if (dlg.ShowDialog() == DialogResult.OK){
picBox.Image2 = Image.FromFile(dlg.FileName);
picBox.Invalidate();
}
};
bar1.ValueChanged += (o,e) => {
picBox.Image2Opacity = bar1.Value * 0.01f;
picBox.Invalidate();
};
Application.Run(f);
}
// Define other methods and classes here
public class MyPicBox : UserControl {
public MyPicBox() {
this.Image2Opacity = 1f;
base.DoubleBuffered = true;
}
public Image Image1 {get;set;}
public Image Image2 {get;set;}
public Point Image2Location {get;set;}
public float Image2Opacity {get;set;}
protected override void OnPaint(PaintEventArgs e) {
if (Image1 != null)
e.Graphics.DrawImage(Image1,
new Rectangle(Point.Empty, Image1.Size),
new Rectangle(Point.Empty, Image1.Size),
GraphicsUnit.Pixel);
if (Image2 != null) {
ImageAttributes attr = new ImageAttributes();
attr.SetColorMatrix(new ColorMatrix(){ Matrix33 = Image2Opacity });
e.Graphics.DrawImage(Image2,
new Rectangle(Image2Location.X, Image2Location.Y, Image2.Width, Image2.Height),
0,0, Image2.Width, Image2.Height,
GraphicsUnit.Pixel,
attr);
}
}
}
效果图
博思aippt
2024-07-20 广告
2024-07-20 广告
博思AIPPT是基于ai制作PPT的智能在线工具,它提供了4种AI制作PPT的方式,包括AI生成大纲、AI直接生成PPT、文本生成PPT、AI提炼文档生成PPT,一站式集成多种AI生成PPT的方式,可满足办公用户的不同需求和使用场景。ai生...
点击进入详情页
本回答由博思aippt提供
展开全部
控件有个属性
Opacity=0是完全隐藏
Opacity=1是完全显示
你可以根据自己需要设置成0.5 0.3这样的浮点数就行
Opacity=0是完全隐藏
Opacity=1是完全显示
你可以根据自己需要设置成0.5 0.3这样的浮点数就行
追问
你好 picturebox 这个控件该如何调opacity这个属性呢?
好想没有picturebox.Opacity=0.5;这样的方法。
能不能详细说下啊 万分感谢
追答
啊~ 不好生意。picturebox没有。但是窗体(form)有这个属性。你可以将一个窗体单独作为一个picturebox的唯一载体。然后picture form的样式设置为none。这样看着就像是一个picture 让picture form在顶或作为主form的mdiform。然后调节picture form透明度 就实现你想要的效果了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那你将Form中的TranspraencyKey设置为你要变透明的颜色 比如你提到的 蓝色
但这有个缺点 就是颜色一定要纯... 不然得话... 你可以试试
希望能解决您的问题。
但这有个缺点 就是颜色一定要纯... 不然得话... 你可以试试
希望能解决您的问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、控件.backgroundcolor透明
2、上层控件.parent=下层控件。
2、上层控件.parent=下层控件。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询