[英]PictureBox background equal to other PictureBox while moving?
C#初学者在这里。
我正在制作2D Tanks游戏,到目前为止一切工作都很好。 我的两个坦克都是图片框,我的导弹也是。 PictureBox中的导弹和坦克图像具有透明的BackColour属性。 问题是,导弹和坦克的背景在另一个图片框(pbBackground)上方时不透明。 看起来像这样 。
我知道使用不同的PB是解决此问题的低效方法,但是我已经走得很远了,我真的不知道更好。 无论如何,如您所见,“导弹”和“坦克PB”的背景显示了表格颜色。 当我下载图像时,背景是透明的,我确定。 如何使PB的背景真正透明? (要匹配重叠PB的背景吗?)
我看到了这一点,但它与我的情况并不完全匹配,我也不了解解决方案。
在此先感谢您的帮助。
更新:好的,我遵循汤米的建议,这是在不停地更改MissileX和MissileY的计时器中沿pbBackground移动它的正确方法吗? 目前,这没有任何作用。
using (Graphics drawmissile = Graphics.FromImage(pbBackground.Image))
{
drawmissile.DrawImage(pbMissile.Image, new Point(MissileX,Convert.ToInt32(MissileY)));
}
PictureBox是不透明的。 而且PictureBox效率不高。
对于制作游戏,您应该研究直接在您的表单上绘制的Paint事件。
Bitmap backgroundBitmap = new Bitmap("background");
Bitmap tankBitmap = new Bitmap("tank");
private void Form1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImage(backgroundBitmap, 0, 0);
e.Graphics.DrawImage(tankBitmap, 30, 30);
}
private void timer1_Tick(object sender, EventArgs e)
{
this.Invalidate(); //trigger Form1_Paint to draw next frame
}
不要将多个PictureBox实例彼此叠加。 它将很快变得非常混乱。
取而代之的是,使用一个PictureBox并使用Paint将图像绘制到其中。 这样,您可以更好地控制正在发生的图形操作。
看看这个
private void DrawIt()
{
System.Drawing.Graphics graphics = this.CreateGraphics();
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(
50, 50, 150, 150);
graphics.DrawEllipse(System.Drawing.Pens.Black, rectangle);
graphics.DrawRectangle(System.Drawing.Pens.Red, rectangle);
}
在此示例中,他们演示了如何直接在Form上绘制形状。 您可以在那里使用PictureBox。 您也可以绘制图像。
有很多方法可以使用System.Drawing.Graphics
对象在表单上绘制形状。 尝试看一下这个问题进行比较。
汤米的答案是正确的 ,但是,如果你在使用pictureboxes(一个坏主意) 死心塌地 ,设置重叠PictureBox的backgroundcolour以透明和窗体的背景图像什么。 直到透明BackColour才使用颜色/图像形式。 汤米实际上在这里有正确的答案,但这就是我为解决问题所做的(懒惰的方式)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.