C#如何消除绘制图形缩放时抖动,总结


一、手动双缓冲

首先定义一个Bitmap
Bitmap backBuffer = new Bitmap(画布宽度, 画布高度);
然后获取这个Bitmap的Graphics
Graphics graphics = Graphics.FromImage(backBuffer);
然后在这个graphics上进行绘图
graphics.Clean(Color.Black);

当所有绘图完成之后,将这个Bitmap再绘制到窗口的画布上,注意不要清理窗口的画布:
windowGraphics.DrawImage(backBuffer, 0, 0, backBuffer.Width, backBuffer.Height);

以上步骤做到的是手动的双缓冲,在GDI+中使用双缓冲效率会非常的慢,所以如果要求效率的话则不推荐使用GDI+

二、其它方案

2.1 高清缩放

g.InterpolationMode = InterpolationMode.HighQualityBicubic

不过会慢点的...建议重写那些函数,在处理完之后再统一刷新...

g.PixelOffsetMode = PixelOffsetMode.HighQuality; 这个是高清缩放

2.2 开启双缓冲

this.DoubleBuffered = true;可以看一下这方面的知识

参考博文1. C#如何消除绘制图形缩放时抖动

优质内容筛选与推荐>>
1、0-3
2、倍增O(1)求区间&值与|值
3、此处为摘抄代码
4、数据库事务ACID详解(转载)
5、3 HTML标题&元素&图像&属性&字体增强&链接&头部标签与元素


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号