windows mobile 双缓冲失效

最近开发一个基于windows mobile 6.5的小程序,需在要一个自定义控件上绘制线条,采用了双缓冲的方法 ,但是程序运行时,发现滚动屏幕时,这根线条还是在闪烁,请看下面的代码

 

protected override void OnPanit(PaintEventArgs e)

{

       Bitmap bmp = new Bitmap(this.width,this.height);

        Graphic g = Graphics.FromImage(bmp);

        g.Clear(Color.White);

        g.DrawLine(Pens.Black, 2, 2, 100, 100);

        e.Graphic.DrawImage(bmp);

        bmp.Dispose();

}

请大家指点一下这段代码有什么问题


慕虎7371278
浏览 303回答 1
1回答

米琪卡哇伊

把 e.Graphic.DrawImage(bmp); 换成this.CreateGraphics().DrawImage(bmp);在你的控件初始化的时候添加下面的代码:this.SetStyle(ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint | ControlStyles.OptimizedDoubleBuffer, true);this.UpdateStyles();
打开App,查看更多内容
随时随地看视频慕课网APP