gpt4 book ai didi

c# - 如何修复 WinForms 窗体中的闪烁?

转载 作者:可可西里 更新时间:2023-11-01 03:07:42 25 4
gpt4 key购买 nike

我不断地绘制框架,我需要表格不闪烁。我该如何实现?

public partial class Form1 : Form
{
Image[] dude = new Image[3];
static int renderpoint = 0;
int lastimage = 0;

public Form1()
{
dude[1] = new Bitmap(@"snipe1.bmp");
dude[0] = new Bitmap(@"snipe0.bmp");

InitializeComponent();
}

private void Form1_Shown(object sender, EventArgs e)
{
MainLoop();
}

private void MainLoop()
{
double FPS = 10;

long ticks1 = 0;
long ticks2 = 0;
double interval = (double)Stopwatch.Frequency / FPS;

while (true)
{
ticks2 = Stopwatch.GetTimestamp();
if (ticks2 >= ticks1 + interval)
{
ticks1 = Stopwatch.GetTimestamp();

MoveGraphics();
this.Refresh();
}

Thread.Sleep(1);
}
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Rectangle rect = new Rectangle(renderpoint, 0, 100, 100);
Color lowcolor = Color.FromArgb(0, 128, 64);
Color highcolor = Color.FromArgb(0, 128, 64);

ImageAttributes imageAttr = new ImageAttributes();
imageAttr.SetColorKey(lowcolor, highcolor);

if (lastimage == 1)
{
lastimage = 0;
g.DrawImage(dude[1], rect, 0, 0, 100, 100, GraphicsUnit.Pixel, imageAttr);
}
else
{
lastimage = 1;
g.DrawImage(dude[0], rect, 0, 0, 100, 100, GraphicsUnit.Pixel, imageAttr);
}
}

void MoveGraphics()
{
if (renderpoint > 950)
{
renderpoint = 0;
}
else
{
renderpoint += 10;
}
}
}

这是当前代码。有什么建议吗?

最佳答案

将其粘贴到您的 Form1 构造函数中:

this.DoubleBuffered = true;

关于c# - 如何修复 WinForms 窗体中的闪烁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2360252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com