【发布时间】:2015-10-06 17:28:37
【问题描述】:
我有一个要绘制的 .png 文件,但问题是,我每 1/10 秒绘制一次该 png,因此每秒绘制 10 次。这个 png 是以 X 和 Y 坐标为中点绘制的,所以图像的中间是 X 和 Y 坐标。
使用此代码:
private void frmMap_Paint(object sender, PaintEventArgs e)
{
Bitmap FlashLight = new Bitmap(
Image.FromFile(AppDomain.CurrentDomain.BaseDirectory + @"light.png"), 4000, 2160);
e.Graphics.DrawImage(FlashLight, new Point(mapX, mapY));
}
但问题是,当每秒绘制 10 次此 png 时,随着 X 和 Y 坐标的变化会导致大量闪烁。
有人知道如何减少或消除闪烁吗?我已经研究过在屏幕上绘制位图并在绘制完成后加载它,我不知道如何做到这一点。
我还研究了双缓冲,但我也不知道如何使用它来减少闪烁。
【问题讨论】:
-
看起来您正在表格上绘画。它有一个属性
DoubleBuffered,这是第一步。但不要抱太大希望;使用 Winforms 制作动画是相当有限的.. -
另外,您在每次绘制迭代时都重新加载位图。这真是太浪费了。只做一次。
-
@TaW 你会推荐使用什么来制作这个动画?因为我只是在新位置重绘 png,但重绘的问题是屏幕变白,整个 png 被重绘。它不必是流畅的动画,它可以是粗壮的,但不要闪烁太多
-
您可以移动显示图像的(最佳缓冲)控件,而不是进行任何绘图。看我的回答!