0

除了标准图形之外,我正在尝试使用更高级的图形。我的一个尝试是创建一些有用的控件——一个旋钮。我有一个包含 100 个旋钮的图像,其值为 1-100,在项目中,我将其拆分为一个位图数组,其中包含每个值 (1-100) 的位图。

这是旋钮对于某个值的样子,可以通过按住鼠标并向上/向下拖动来更改该值。

旋钮

我的技术是每当值更改时,作为控件对象的旋钮的 BackgroundImage 属性将更改为位图数组中“值”索引中的图像。这意味着如果我有位图数组X、值V和旋钮K,那么K.BackgroundImage = X[V]. 每次更改值都会重复此操作。

问题是:当我在运行时增加/减少值时,旋钮在图像更改期间就像“闪烁”。这导致我认为我的技术不好,我想知道是否有更好的方法来做到这一点。

*旋钮的设计不是我的,只是在互联网上找到的。

4

1 回答 1

1

我将假设您有一个 UserControl 或某种 Control 派生子类。如果你不这样做,那就让它...

当您使用它时,请阅读这篇很棒的文章: http: //www.codeproject.com/Articles/12870/Don-t-Flicker-Double-Buffer

最重要的是,在覆盖中执行您的绘画OnPaint并在您的构造函数中执行以下操作:

    SetStyle(
        ControlStyles.UserPaint |
        ControlStyles.AllPaintingInWmPaint |
        ControlStyles.OptimizedDoubleBuffer, true);

那应该可以解决您的闪烁问题。

于 2013-02-22T22:27:21.547 回答