Windows表单按钮wm_paint flicker在FlatStyle =系统上



我正在创建一个按钮并将FlatStyle设置为系统。

由于此模式通常不支持图像,要与文本一起显示图像,所以按钮自己的文本设置为",我在graphics.fromhwnd和wndproc中绘制自己的图像和文本,通过捕获WM_PAINT并在致电基础后进行我自己的图纸。

这很好,除了一个问题:在Windows 7上,突出显示的按钮在灰色和蓝色之间慢慢脉冲。我发现这种脉动会导致按钮偶尔闪烁。

  1. 我已经使用WS_EX_COMPOSITED。
  2. 我尝试了双扣= true。它没有帮助。
  3. 我尝试使用wm_printclient的BufferedGraphics,但这并不是以航空风格绘制的,因此根本没有脉动。

有什么想法?

"因为此模式通常不支持图像" ...事实证明,人们可以完全避免此难题。

在Windows Vista和较新的情况下,可以制作FlatStyle =系统可以显示图像,而无需任何特殊的绘画。(在Windows XP上,后备到默认绘画。)

将bm_setimage发送到flatStyle =系统按钮以设置图像。这将无法与Windows Forms的按钮自动实现相关。因此,使用BCM_GetIdealSize测量。最后,如果按钮只有图像和文本,请在CreateParams.Style中设置BS_BITMAP。

相关内容

  • 没有找到相关文章

最新更新