Исчезните цвет белому (увеличивающаяся яркость)

Это работает для меня:

    public static void listItems() throws Exception {

    ItemView view = new ItemView(100);
    FolderView view1 = new FolderView(100);
    Folder folder = Folder.bind(service, WellKnownFolderName.MsgFolderRoot);
    SearchFilter filterFolder = new SearchFilter.IsEqualTo(FolderSchema.DisplayName,"Posteingang");
    FindItemsResults<Item> findInbox = service.findItems(new FolderId(uniqueId),view);
    FindFoldersResults findFolderResults = folder.findFolders(filterFolder, view1);
    service.loadPropertiesForFolder(folder, PropertySet.FirstClassProperties);
    service.loadPropertiesForItems(findInbox, PropertySet.FirstClassProperties);

    for (Folder f : findFolderResults.getFolders()) {
        System.out.println("Displayname=====" + f.getDisplayName());
        for (Item item : findInbox.getItems()) {
            System.out.println("sub==========" + item.getSubject());
            System.out.println(item.getClass());
            counter++;          
        }
    }
    System.out.println(counter);
}

}

Сервер выполняет работу, а не мое приложение.

7
задан Jon Seigel 10 April 2010 в 19:21
поделиться

4 ответа

Это может быть больше, чем Вам нужно, вот код для класса, который я использую:

public class ControlColorAnimator
{
    private const int INTERVAL = 100;

    private readonly decimal _alphaIncrement;
    private readonly decimal _blueIncrement;
    private readonly Color _endColor;
    private readonly decimal _greenIncrement;
    private readonly int _iterations;
    private readonly decimal _redIncrement;
    private readonly Color _startColor;

    private decimal _currentAlpha;
    private decimal _currentBlueValue;
    private decimal _currentGreenValue;
    private decimal _currentRedValue;

    private Timer _timer;

    public ControlColorAnimator(TimeSpan duration, Color startColor, Color endColor)
    {
        _startColor = startColor;
        _endColor = endColor;
        resetColor();

        _iterations = duration.Milliseconds / INTERVAL;
        _alphaIncrement = ((decimal) startColor.A - endColor.A) / _iterations;
        _redIncrement = ((decimal) startColor.R - endColor.R) / _iterations;
        _greenIncrement = ((decimal) startColor.G - endColor.G) / _iterations;
        _blueIncrement = ((decimal) startColor.B - endColor.B) / _iterations;
    }

    public Color CurrentColor
    {
        get
        {
            int alpha = Convert.ToInt32(_currentAlpha);
            int red = Convert.ToInt32(_currentRedValue);
            int green = Convert.ToInt32(_currentGreenValue);
            int blue = Convert.ToInt32(_currentBlueValue);

            return Color.FromArgb(alpha, red, green, blue);
        }
    }

    public event EventHandler<DataEventArgs<Color>> ColorChanged;

    public void Go()
    {
        disposeOfTheTimer();
        OnColorChanged(_startColor);

        resetColor();

        int currentIteration = 0;
        _timer = new Timer(delegate
            {
                if (currentIteration++ >= _iterations)
                {
                    Stop();
                    return;
                }
                _currentAlpha -= _alphaIncrement;
                _currentRedValue -= _redIncrement;
                _currentGreenValue -= _greenIncrement;
                _currentBlueValue -= _blueIncrement;
                OnColorChanged(CurrentColor);
            }, null, TimeSpan.FromMilliseconds(INTERVAL), TimeSpan.FromMilliseconds(INTERVAL));
    }

    public void Stop()
    {
        disposeOfTheTimer();
        OnColorChanged(_endColor);
    }

    protected virtual void OnColorChanged(Color color)
    {
        if (ColorChanged == null) return;
        ColorChanged(this, color);
    }

    private void disposeOfTheTimer()
    {
        Timer timer = _timer;
        _timer = null;

        if (timer != null) timer.Dispose();
    }

    private void resetColor()
    {
        _currentAlpha = _startColor.A;
        _currentRedValue = _startColor.R;
        _currentGreenValue = _startColor.G;
        _currentBlueValue = _startColor.B;
    }
}

Это использует DataEventArgs<T> (показанный ниже)

/// <summary>
/// Generic implementation of <see cref="EventArgs"/> that allows for a data element to be passed.
/// </summary>
/// <typeparam name="T">The type of data to contain.</typeparam>
[DebuggerDisplay("{Data}")]
public class DataEventArgs<T> : EventArgs
{
    private T _data;

    /// <summary>
    /// Constructs a <see cref="DataEventArgs{T}"/>.
    /// </summary>
    /// <param name="data">The data to contain in the <see cref="DataEventArgs{T}"/></param>
    [DebuggerHidden]
    public DataEventArgs(T data)
    {
        _data = data;
    }

    /// <summary>
    /// Gets the data for this <see cref="DataEventArgs{T}"/>.
    /// </summary>
    public virtual T Data
    {
        [DebuggerHidden]
        get { return _data; }
        [DebuggerHidden]
        protected set { _data = value; }
    }

    [DebuggerHidden]
    public static implicit operator DataEventArgs<T>(T data)
    {
        return new DataEventArgs<T>(data);
    }

    [DebuggerHidden]
    public static implicit operator T(DataEventArgs<T> e)
    {
        return e.Data;
    }
}

Используйте в своей форме как это:

private ControlColorAnimator _animator;

private void runColorLoop()
{
    endCurrentAnimation();
    startNewAnimation();
}

private void endCurrentAnimation()
{
    ControlColorAnimator animator = _animator;
    _animator = null;
    if (animator != null)
    {
        animator.ColorChanged -= _animator_ColorChanged;
        animator.Stop();
    }
}

private void startNewAnimation()
{
    _animator = new ControlColorAnimator(TimeSpan.FromSeconds(.6), Color.Yellow, BackColor);
    _animator.ColorChanged += _animator_ColorChanged;
    _animator.Go();
}

private void _animator_ColorChanged(object sender, DataEventArgs<Color> e)
{
    invokeOnFormThread(delegate { setColor(e); });
}

private void setColor(Color color)
{
    // code to set color of the controls goes here
}

private void invokeOnFormThread(MethodInvoker method)
{
    if (IsHandleCreated)
        Invoke(method);
    else
        method();
}
8
ответ дан 7 December 2019 в 01:26
поделиться

Просто интерполируйте между цветами на основе времени.

Если Ваш оранжевый цвет (r1, g1, b1), и Вы хотите исчезнуть к другому цвету (r2, g2, b2), формула для линейной интерполяции (r1 + (r2-r1) * t, g1 + (g2-g1) * t, b1 + (b2-b1) * t), где t находится в диапазоне [0.0 1.0].

В Вашем примере Ваш первый цвет - вероятно, что-то как (255,200,0), и Ваш второй цвет был бы (255,255,255).

Если Вы желаете более гладких переходов, ищете различные способы интерполяции.

2
ответ дан 7 December 2019 в 01:26
поделиться

Если Вы хотите сделать это быстро и гладко, смотреть на класс ColorMatrix.

0
ответ дан 7 December 2019 в 01:26
поделиться

Вы первоначально не указывали технологию, когда я отправил этот ответ, но здесь - как Вы сделали бы это с помощью jQuery.

UI/Эффекты/Выделение.

$("div").click(function () {
      $(this).effect("highlight", {}, 3000);
});
0
ответ дан 7 December 2019 в 01:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: