使用C#的Time控件来控制的Label位置(来回左右移动),但存在我的界面老是一闪一闪,可能你们的机器不会,但我的会,我放的是主界面(多

LANTE80 2007-07-31 10:10:36
虽然可以把的每次运行时间设置长点,就不会一闪一闪了,但那样也没达到效果。
...全文
536 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
LANTE80 2007-07-31
  • 打赏
  • 举报
回复
我回去试下,还有方法的给我留下,
lovingkiss 2007-07-31
  • 打赏
  • 举报
回复
但是双缓也不是灵丹妙药,你会发现,即使你做的再完美,液晶显示器下永远是那么的卡、那么的闪烁——而普通的哪怕很滥的显示器就不会。

字体加大,背景设置和字体色彩不要对比太强,也可以减轻的。


以下是资料

可以在包含复杂绘制操作的应用程序中使用双缓冲图形减少闪烁
1、在应用程序中使用双缓冲的最简便的方法是使用 .NET Framework 为窗体和控件提供的默认双缓冲。通过将 DoubleBuffered 属性设置为 true 或使用 SetStyle 方法可以为 Windows 窗体和所创作的 Windows 控件启用默认双缓冲。
Me.DoubleBuffered=True 或者
Me.SetStyle(ControlStyles.DoubleBuffer _
Or ControlStyles.UserPaint _
Or ControlStyles.AllPaintingInWmPaint, _
True)
Me.UpdateStyles()

2、ControlStyles 枚举 里面OptimizedDoubleBuffer
如果为 true,则该控件首先在缓冲区中绘制,而不是直接绘制到屏幕上,这样可以减少闪烁。如果将此属性设置为 true,则还应当将 AllPaintingInWmPaint 设置为 true。
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.chs/CPref17/html/T_System_Windows_Forms_ControlStyles.htm#codeExampleToggle

3、对于更高级的双缓冲情形,可以使用 .NET Framework 类实现自己的双缓冲逻辑。负责单独分配和管理图形缓冲区的类是 BufferedGraphicsContext 类。每个应用程序都有自己的默认 BufferedGraphicsContext 来管理此应用程序的所有默认双缓冲。提供调用 Current 可以检索对此实例的引用。
Dim myContext as BufferedGraphicsContext
myContext = BufferedGraphicsManager.Current
对于图形密集型应用程序(如动画),有时可通过使用专用的 BufferedGraphicsContext(而不是 BufferedGraphicsManager 提供的 BufferedGraphicsContext)来提高性能。这样,您可以单独创建并管理图形缓冲区,尽管该应用程序会占用更多内存,但可以避免因管理其他所有与应用程序关联的缓冲图形而导致的性能开销。
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxmclignrl/html/4c2a90ee-bbbe-4ff6-9170-1b06c195c918.htm

4、如何:手动呈现缓冲图形
ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_fxmclignrl/html/5192295e-bd8e-45f7-8bd6-5c4f6bd21e61.htm

' Visual Basic
' This example assumes the existence of a form called Form1.
Dim currentContext As BufferedGraphicsContext
Dim myBuffer As BufferedGraphics
' Gets a reference to the current BufferedGraphicsContext.
currentContext = BufferedGraphicsManager.Current
' Creates a BufferedGraphics instance associated with Form1, and with
' dimensions the same size as the drawing surface of Form1.
myBuffer = currentContext.Allocate(Form1.CreateGraphics, _
Form1.DisplayRectangle)


==================================================================
博客空间:http://blog.csdn.net/lovingkiss
资源下载:http://download.csdn.net/user/lovingkiss
Email:loving-kiss@163.com
优惠接单开发,收费带初学者,组件控件定制开发,成品源代码批发
联系方式:Q64180940(请清楚注明业务还是技术咨询) 全天在线
==================================================================
lovingkiss 2007-07-31
  • 打赏
  • 举报
回复
使用双缓存

110,476

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧