我有一个.png文件,我想绘制,问题是,我正在绘制这个PNG每秒的1/10,所以这是每秒10次。这个png是用X和Y坐标作为中间点绘制的,所以图像的中间是X和Y坐标。使用gdi + flickerfree绘图+
使用此代码:
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));
}
问题是虽然,这种绘制PNG每秒10次时,不断变化的X和Y坐标在闪烁的很多结果。
有没有人有任何想法如何减少或消除闪烁?我已经考虑绘制位图关闭屏幕,并加载它一旦完成绘图,我不知道如何做到这一点。
我也研究过双缓冲,这再次我不知道如何使用它来减少我的闪烁。
看起来像你正在绘制到窗体上。它有一个属性'DoubleBuffered',这是第一步。但不要太希望;使用Winforms的动画是相当有限的.. – TaW
此外,你正在重新加载位图上的每个绘画迭代。这超出了浪费。只做一次。 – Rotem
@TaW你会推荐使用什么动画?因为我只是在新的位置重新绘制PNG,但重画的问题是屏幕变白,整个PNG被重绘。它不一定是流畅的动画,它可以是矮胖的,但不会闪烁太多 – BramSnoek