(C#) 小弟是想做一个飞机飞行的效果,,先用一张天空白云的图片不断地从窗体的上端向下端播放。。然后用PictureBox加载一张图片。。将PictureBox的背景透明掉。。图片的指定颜色透明掉。。这样效果就比较好看了。。
但是,,,,,
运行时,PictureBox的背景色却一直都在。。不知为什么,,恳求高手帮帮小弟。。小弟无尽的感激。。谢谢! public Image plane;
public Form1()
{
InitializeComponent();
this.Paint += delegate
{
DrawPlane();
};
} public void DrawPlane()
{
plan = new Bitmap("plan.jpg");
plan.MakeTransparent(Color.Black); PictureBox pb = new PictureBox();
pb.BackColor = Color.Transparent;
pb.BackgroundImage = plan;
pb.BackgroundImageLayout = ImageLayout.Stretch;
pb.Top = 550;
pb.Left = 207; this.Controls.Add(pb);
}
但是,,,,,
运行时,PictureBox的背景色却一直都在。。不知为什么,,恳求高手帮帮小弟。。小弟无尽的感激。。谢谢! public Image plane;
public Form1()
{
InitializeComponent();
this.Paint += delegate
{
DrawPlane();
};
} public void DrawPlane()
{
plan = new Bitmap("plan.jpg");
plan.MakeTransparent(Color.Black); PictureBox pb = new PictureBox();
pb.BackColor = Color.Transparent;
pb.BackgroundImage = plan;
pb.BackgroundImageLayout = ImageLayout.Stretch;
pb.Top = 550;
pb.Left = 207; this.Controls.Add(pb);
}
解决方案 »
- 问一个控件自由缩放的问题,帮帮忙
- 大批量执行存储过程有什么好方法嘛?
- Winform RDLC传参求教。。
- 怎么动态显示遍历文件名
- 有那位朋友能帮我看看http://www.vancl.com/SelfSuitInfo/Z0000010.html点击图片浮层,咋样实现
- .net2005 c/s应用程序安装后,在有些XP下面无法运行,运行报错
- SqlServer2000中附加数据库的功能以及界面是怎么做的?要用C#写一个跟它一摸一样的,各位大侠给点资料啊 !!
- how to hide console window in c# console application?
- 图标资源问题,请进
- 一个扩充拨号类
- 谢谢大家了
- 请看,这样减少函数参数个数的方法是否可行,有什么弊端
云图片用gif,本身带透明
然后程序里加载,
建立路径GraphicPath GP
for i 宽度
for j 高度
循环 图片每个像素
如果GetPixel(i,j)!=Color.Empty( 或者写成Color.FromArgb(0,0,0) )
GP.AddRectangle(new Rectangle(i,j,1,1)) 把这点加入路径最后picturebox1.Region=new Region(GP)
手动建个pictureBox1Color col = Color.FromArgb(0, 255, 255, 255);//背景透明度0
pictureBox1.BackColor = col;手动建个ImageList1(属性里设置TransparentColor为黑色)
把你的飞机加进去,
用pictureBox1.BackgroundImage=imageList1.Images[0];来用,天空(云)的做在Form1() 的背景里,这样飞机能在Form1()前面透明。
(用另一个pictureBox不行)要动的话,gif的方法我不懂,我用
全局:
int x=0;
System.Timers.Timer play = new System.Timers.Timer(100);
Form1_load里:
play.Elapsed += new System.Timers.ElapsedEventHandler(theout);替换图片:
public void theout(object source, System.Timers.ElapsedEventArgs e)
{
pictureBox1.BackgroundImage = imageList1.Images[x];
x++;
if (x == imageList1.Images.Count )
{
x = 0;
} }前提是有连续的多张图片放在imagelist里,切换时动画。(透明色有效,去背景有效)
不知楼主的“先用一张天空白云的图片不断地从窗体的上端向下端播放”怎么做...
{
System.Drawing.Graphics g;
g = this.CreateGraphics();
background = Image.FromFile(Application.StartupPath + @"\image\2.jpg"); //获取背景图片 g.DrawImage(background, 0, B - 635, 510, 635);
g.DrawImage(background, 0, B, 510, 635);
B += 5;
if (B > 635)
{
B = 0;
}
}图片不断地从窗体的上端向下端播放代码
我已经用PS P过那张飞机的图片。绝对是全黑色的
要做出天空白云在移动的效果,直接单张图片框该坐标就行了~我这里说的是你飞机需不需要动画,(比如引擎的火焰or烟雾效果),移动效果没必要这么麻烦,
控件透明,我所知道了只有ImageList的用起来效果最好,改坐标的移动也没问题,但是只能相对于主窗口透明,对于其他控件没办法,楼主加油吧~