C# 如何让我的线路在winforms上正常跳转
我一直在尝试用C#创建一个winforms程序来演示Mystify屏幕保护程序,这是我无法让程序流畅运行的原因之一。我不知道我的计算结果是否正确,但请给我一个提示。线条一直随机出现在表单上,而不是随着阴影或尾巴流动C# 如何让我的线路在winforms上正常跳转,c#,winforms,C#,Winforms,我一直在尝试用C#创建一个winforms程序来演示Mystify屏幕保护程序,这是我无法让程序流畅运行的原因之一。我不知道我的计算结果是否正确,但请给我一个提示。线条一直随机出现在表单上,而不是随着阴影或尾巴流动 private bool playButton = false; private int xP1 = 10; private int yP1 = 10; private int xP2 = 100; private int yP2 = 50;
private bool playButton = false;
private int xP1 = 10;
private int yP1 = 10;
private int xP2 = 100;
private int yP2 = 50;
private int xSpeed = 0;
private int ySpeed = 0;
private int windowHeight = 400;
private int windowWidth = 600;
private int xSpeedChange = 2;
private int ySpeedChange = 2;
private Random rand = new Random();
public SETMystify()
{
InitializeComponent();
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
playButton = true;
}
private void canvas_Paint(object sender, PaintEventArgs e)
{
Graphics paintLine = e.Graphics;
Pen penColor = new Pen(Color.Red, 3);
if (playButton == true)
{
xP1 = rand.Next(0, windowHeight);
yP1 = rand.Next(0, windowWidth);
yP2 = rand.Next(0, windowHeight);
xP2 = rand.Next(0, windowWidth);
xSpeed = rand.Next(5, 10);
ySpeed = rand.Next(5, 10);
xP1 += xSpeed;
yP1 += ySpeed;
xP2 += xSpeed;
yP2 += ySpeed;
}
if (xP1 > windowWidth)
{
xP1 = windowWidth;
xSpeed = xSpeedChange * -1;
}
if (xP1 < 0)
{
xP1 = 0;
xSpeed = xSpeedChange;
}
if (yP1 > windowHeight)
{
yP1 = windowHeight;
ySpeed = ySpeedChange * -1;
}
if (yP1 < 0)
{
yP1 = 0;
ySpeed = ySpeedChange;
}
//-----------------------//
if (xP2 > windowWidth)
{
xP2 = windowWidth;
xSpeed = xSpeedChange * -1;
}
if (xP2 < 0)
{
xP2 = 0;
xSpeed = xSpeedChange;
}
if (yP2 > windowHeight)
{
yP2 = windowHeight;
ySpeed = ySpeedChange * -1;
}
if (yP2 < 0)
{
yP2 = 0;
ySpeed = ySpeedChange;
}
paintLine.DrawLine(penColor, xP1, yP1, xP2, yP2);
canvas.Invalidate();
}
}
private bool playButton=false;
私有int xP1=10;
私人int yP1=10;
私有int xP2=100;
私人int yP2=50;
私有int xSpeed=0;
私有int Y速度=0;
专用窗高度=400;
私有窗口宽度=600;
私有int xSpeedChange=2;
私有int ySpeedChange=2;
private Random rand=new Random();
公共设置神秘化()
{
初始化组件();
}
私有void工具条带按钮1_单击(对象发送方,事件参数e)
{
playButton=true;
}
私有void canvas_Paint(对象发送器,PaintEventArgs e)
{
图形绘制线=e.图形;
Pen penColor=新笔(颜色:红色,3);
如果(播放按钮==真)
{
xP1=rand.Next(0,窗口高度);
yP1=rand.Next(0,窗口宽度);
yP2=下一个随机数(0,窗高);
xP2=rand.Next(0,窗口宽度);
xSpeed=rand.Next(5,10);
ySpeed=rand.Next(5,10);
xP1+=xSpeed;
yP1+=Y速度;
xP2+=xSpeed;
yP2+=Y速度;
}
如果(xP1>windowWidth)
{
xP1=窗宽;
xSpeed=xSpeedChange*-1;
}
if(xP1<0)
{
xP1=0;
xSpeed=xSpeedChange;
}
如果(yP1>窗高)
{
yP1=窗高;
ySpeed=ySpeedChange*-1;
}
如果(yP1<0)
{
yP1=0;
ySpeed=ySpeedChange;
}
//-----------------------//
如果(xP2>windowWidth)
{
xP2=窗宽;
xSpeed=xSpeedChange*-1;
}
if(xP2<0)
{
xP2=0;
xSpeed=xSpeedChange;
}
如果(yP2>窗高)
{
yP2=窗高;
ySpeed=ySpeedChange*-1;
}
如果(yP2<0)
{
yP2=0;
ySpeed=ySpeedChange;
}
画线。画线(铅笔色,xP1,yP1,xP2,yP2);
canvas.Invalidate();
}
}
不要调用canvas.Invalidate()代码>来自画布绘制事件。否则,您需要一个计时器或游戏循环代码>来自画布绘制事件。否则,您需要计时器或游戏循环。