【发布时间】:2013-07-03 03:07:46
【问题描述】:
我将图片框的背景设置为图像,这很好。 我尝试在背景图像上画笔线,但这些线条没有出现在图像顶部
这应该会发生:(我更改了代码,但不知道我更改了什么来实现这一点,但这是在没有重置图片框的情况下)
图片框每 2000 毫秒更新一次以显示标志信号,但我一生都无法让线条出现。
以下是代码:
lblSelectedChar.Text = inputchar.ToString();
picSemaphore.BackgroundImage = semaphore.Properties.Resources.human;
leftHandDown();
rightHandLow();
leftHandDown() 和 rightHandLow() 方法绘制线条,但我认为它们是在图像后面绘制的。我想把它们画在前面。知道我该怎么做吗?
private void leftHandDown()
{
lblLeftHand.Hide();
display.DrawLine(penLeftArm, centXCoord, centYCoord, LHDownXCoord, LHDownYCoord);
lblLeftHand.Top = LHDownYCoord + 74;
lblLeftHand.Left = LHDownXCoord + 13;
lblLeftHand.Show();
lblLeftHand.Update();
}
另外,当标签被移动时,它会在最后的位置留下一个空白区域。知道如何阻止这种情况发生吗?
【问题讨论】:
-
什么是
display?你是怎么得到它的? -
display = picSemaphore.CreateGraphics();在表单加载时初始化。 -
不要那样做。使用 Paint 事件或图像中的 Graphics。
-
您能解释一下吗?我不太清楚你的意思,抱歉。
-
CreateGraphics 是表面上的临时绘图。通过最小化表单或让另一个表单在其上移动,它将被删除。基本上,永远不要使用 CreateGraphics...永远。此外,切勿将图形存储在长期变量中。使用paint 事件为您提供
e.Graphics属性中的图形对象。
标签: c# winforms picturebox