我正在创建一个Button并将FlatStyle设置为System。
由于此模式通常不支持图像,要将图像与文本一起显示,按钮自己的文本设置为""我在WndProc中通过Graphics.FromHwnd和TextRenderer绘制我自己的图像和文本,通过捕获WM_PAINT并在调用base.WndProc后自己绘制。
这很有效,除了一个问题:在Windows 7上,突出显示的按钮在灰色和蓝色之间缓慢跳动。我发现这种脉冲会导致按钮偶尔闪烁。
有什么想法吗?
答案 0 :(得分:0)
“因为这种模式通常不支持图像”......事实证明,完全可以避免这个难题。
在Windows Vista及更高版本上,可以使FlatStyle = System显示图像而无需任何特殊绘画。 (在Windows XP上,回退到默认绘画。)
将BM_SETIMAGE发送到FlatStyle = System按钮以设置图像。 这不适用于Windows窗体的Button AutoSize实现。因此,使用BCM_GETIDEALSIZE进行测量。 最后,如果按钮只有图像而没有文本,请在CreateParams.Style中设置BS_BITMAP。