C#WPF-MainFormPaint生成的图像在预创建的PictureBox图像上分层

时间:2018-08-25 17:35:13

标签: c# z-index transparency picturebox

我已经从字面上搜索INTERNET的DEPTHS,试图找到解决该问题的方法。所以这是当前情况:

  • 我有一个var siblings = []; var siblingsLen; function toggleCards(objId) { var grabId = objId.id; let checkPos = document.getElementById(grabId).previousElementSibling; let i = 0; if (checkPos == null) { return; } else { for (i = 0;; i++) { if (i == 0) { siblings.push(document.getElementById(grabId).previousElementSibling); } else { siblings.push(document.getElementById(siblings[i - 1].id).previousElementSibling); } if (siblings[i].previousElementSibling == null) { siblingsLen = siblings.length; break; } } } for (i = 0; i < siblingsLen; i++) { document.getElementById(siblings[i].id).classList.add('cardAnimationForwards'); if (document.getElementById(siblings[i].id).classList.contains('cardAnimationBackwards')) { document.getElementById(siblings[i].id).classList.remove('cardAnimationBackwards'); } } } function toggleCardsLeave() { for (i = 0; i < siblingsLen; i++) { document.getElementById(siblings[i].id).classList.remove('cardAnimationForwards'); document.getElementById(siblings[i].id).classList.add('cardAnimationBackwards'); } siblingsLen = 0; siblings = []; } ,其中包含名为System.Windows.Forms.PictureBox的主角,该主角已创建并放置在表单中。 (他的图像通过设置为描绘他运动的计时器循环显示。)
  • 我有一个启动绘画功能,可以通过以下代码创建对象(树):

Character

...以此作为公共/全局对象创建:

public void MainFormPaint(object sender, PaintEventArgs e)
{
    e.Graphics.DrawImage(treeImage,50,50,200,200);
}

我只需要树在主角色之上/ zIndexed。我有碰撞设置,但我无法做到这一点。

我尝试过的事情:

  • 删除表单上的“字符”并在运行时创建一个新的PictureBox,然后使用System.Drawing.Image treeImage = System.Drawing.Image.FromFile(treeImageLocation); Graphics treeObject; 函数对其进行分层(这会干扰图像的透明度,并赋予其白色背景)
  • 我已经研究了Panels,一生都无法获得透明胶片来进行NOR图像添加/分层创建...

我不知道解决这个特殊难题的方法。老实说,我不介意此解决方案是否有冗长而复杂的答案。

非常感谢大家的帮助!

0 个答案:

没有答案