如何正确使用图形

时间:2013-02-22 20:42:03

标签: c# .net graphics

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

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

Knob

我的技术是每当值发生变化时,Knob的BackgroundImage属性(一个Control对象)将被更改为位于bitmaps数组中'Value'索引中的图像。这意味着如果我有位图数组 X ,值 V 和旋钮 K ,那么K.BackgroundImage = X[V]。每次更改值都会重复此操作。

问题是:当我在运行时增加/减少值时,旋钮在图像更改期间就像“闪烁”一样。这让我觉得我的技术不好,我想知道是否有更好的方法。

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

1 个答案:

答案 0 :(得分:1)

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

当你参与其中时,请阅读这篇了不起的文章:http://www.codeproject.com/Articles/12870/Don-t-Flicker-Double-Buffer

底线,在OnPaint覆盖中执行绘画,并在构造函数中执行以下操作:

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

这应该可以修复你的闪烁。