消除TSpeedButton的闪烁 [英] Remove flickering from TSpeedButton

查看:92
本文介绍了消除TSpeedButton的闪烁的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

重现步骤:


  1. 在新的VCL表单中添加 TPanel 并设置 Align = alClient

  2. 向面板添加 TSpeedButton 并分配一些bmp图片添加到 Glyph 属性。 (可选,但更清楚: Flat = True

  3. 运行应用程序,抓住表单的右下角并将其移动周围。 TSpeedButton 中的图像会闪烁。

  1. Add TPanel to a new VCL form and set Align = alClient.
  2. Add TSpeedButton to the panel and assign some bmp image to the Glyph property. (Optional but makes it clearer: Flat = True)
  3. Run the application, grab the bottom right corner of the form and move it around. The image in the TSpeedButton will flicker.

我读了很多关于获取摆脱了闪烁,但是这两个建议似乎都不适合 TSpeedButton

I read a lot about getting rid of flickering, but neither of the suggestions seem to work for a TSpeedButton:


  • 没有 DoubleBuffered 属性

  • WS_EX_COMPOSITED 无法设置,因为它不是 TWinControl ,而是 TGraphicControl

  • 未收到WM_ERASEBKGND 消息

  • There's no DoubleBuffered property
  • WS_EX_COMPOSITED can't be set, because it's not a TWinControl but a TGraphicControl
  • WM_ERASEBKGND message isn't received

如果有任何重要意义,我实际上正在使用 TPngSpeedButton ,但是由于实际问题出在 TSpeedButton 之内,因此我在示例中使用了它。

In case it is of any importance, I'm actually using TPngSpeedButton, but since the actual problem lies within the TSpeedButton, I'm using that in the example.

对此有任何解决方案吗?

Is there any solution for this?

编辑:由于某种原因,没有人能够复制到目前为止,为了确保不是我的描述,这是dfm:

For some reason nobody is able to reproduce this so far, so to make sure it's not my description, here's the dfm:

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 337
  ClientWidth = 635
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Panel1: TPanel
    Left = 0
    Top = 0
    Width = 635
    Height = 337
    Align = alClient
    Caption = 'Panel1'
    TabOrder = 0
    object SpeedButton1: TSpeedButton
      Left = 64
      Top = 56
      Width = 32
      Height = 32
      Flat = True
      Glyph.Data = {
        360C0000424D360C000000000000360000002800000020000000200000000100
        180000000000000C000000000000000000000000000000000000FFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CED241C
        ED241CED241CED241CED241CED241CED241CED241CED241CED241CED241CED24
        1CED241CED241CED241CED241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CED241C
        ED241CED241CED241CED241CED241CED241CED241CED241CED241CED241CED24
        1CED241CED241CED241CED241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CED241C
        ED241CED241CED241CED241CED241CED241CED241CED241CED241CED241CED24
        1CED241CED241CED241CED241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CED241C
        ED241CED241CED241CED241CED241CED241CED241CED241CED241CED241CED24
        1CED241CED241CED241CED241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CED241C
        ED241CED241CED241CED241CED241CED241CED241CED241CED241CED241CED24
        1CED241CED241CED241CED241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDCC483FCC483F
        CC483FCC483FCC483FCC483FCC483F241CED241CED241CED241CED241CEDCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDCC483FCC483F
        CC483FCC483FCC483FCC483FCC483F241CED241CED241CED241CED241CEDCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDCC483FCC483F
        CC483FCC483FCC483FCC483FCC483F241CED241CED241CED241CED241CEDCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDCC483FCC483F
        CC483FCC483FCC483FCC483FCC483F241CED241CED241CED241CED241CEDCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CEDCC483FCC483F
        CC483FCC483FCC483FCC483FCC483F241CED241CED241CED241CED241CED241C
        ED241CED241CED241CED241CED241CED241CED241CED241CED241CED241CED24
        1CED241CED241CED241CED241CED241CED241CED241CED241CEDCC483FCC483F
        CC483FCC483FFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CED241C
        ED241CED241CED241CED241CED241CED241CED241CED241CED241CED241CED24
        1CED241CED241CED241CED241CED241CED241CED241CED241CEDCC483FCC483F
        CC483FCC483FFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CED241C
        ED241CED241CED241CED241CED241CED241CED241CED241CED241CED241CED24
        1CED241CED241CED241CED241CED241CED241CED241CED241CEDCC483FCC483F
        CC483FCC483FFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CED241C
        ED241CED241CED241CED241CED241CED241CED241CED241CED241CED241CED24
        1CED241CED241CED241CED241CED241CED241CED241CED241CEDCC483FCC483F
        CC483FCC483FFFFFFFFFFFFFFFFFFF241CED241CED241CED241CED241CED241C
        ED241CED241CED241CED241CED241CED241CED241CED241CED241CED241CED24
        1CED241CED241CED241CED241CED241CED241CED241CED241CEDCC483FCC483F
        CC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC483FCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC483FCC483F
        CC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC483FCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC483FCC483F
        CC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC483FCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC483FCC483F
        CC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC483FCC483F
        CC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC483FCC483F
        CC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC483FCC483F
        CC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC483FCC48
        3FCC483FCC483FCC483FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF}
    end
  end
end

这就是它的外观。实际上,它的速度要快一些,但是捕获的视频和gif转换会使其速度变慢。

And this is how it looks. In reality it's a little bit faster, but the captured video and gif conversion slows it down a bit.

推荐答案

我实际上能够使用Delphi 10.2.3 Tokyo在Windows 7上重现它。
我经常遇到类似的问题,从那时起,我一直在对所有 TPanel 及其子代使用此设置,在这种情况下也可以使用。 / p>

I was actually able to reproduce it on Windows 7 with Delphi 10.2.3 Tokyo. I have had similar problems quite often and since then I've been using this settings for all TPanel and its descendants, which worked in this case as well.

Panel1.DoubleBuffered := True;
Panel1.ParentBackground := False;

这篇关于消除TSpeedButton的闪烁的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆