Что не так с моим цветным блеском
Использование сообщества W10/64 и VS 2019, c#
Я пытаюсь сделать простую 3-цветную горизонтальную градиентную заливку. Мне удалось поймать ошибку, но не выяснить точно, в чем проблема. Точка останова на проблемной линии указывала, что colorBlend является правильным. Вот этот код. Я был бы признателен за любую помощь в этом деле.
Rectangle myRectangle = new Rectangle ( x3, y1, x4 - x3, y2 - y1 + 1 ); // fillColor is any arbitrary Color. Eg Color.Blue Color[] myColors = { fillColor, Color.White, fillColor }; float[] myPositions = { 0f, 0.5f, 1f }; ColorBlend colorBlend = new ColorBlend (); colorBlend.Colors = myColors; colorBlend.Positions = myPositions; LinearGradientBrush linGrBrush = new LinearGradientBrush ( myRectangle, fillColor, fillColor, LinearGradientMode.Horizontal ); // failure is at the following line. VS gives this error: // System.ArgumentException: Property must be set to // a valid ColorBlend object to use interpolation // colors. ColorBlend objects must be constructed // with the same number of positions and color // values. Positions must be between 0.0 and 1.0, 1.0 // indicating the last element in the array. at // System.Drawing.Drawing2D.LinearGradientBrush._GetI // nterpolationColors() indicating the last element in // the array. at System.Drawing.Drawing2D.LinearGradientBrush // ._GetInterpolationColors() linGrBrush.InterpolationColors = colorBlend; // error here graphicsObject.FillRectangle ( linGrBrush, myRectangle );
Что я уже пробовал:
Я пробовал устанавливать myColors на фиксированные значения, например, { Color.красный цвет.белый цвет.Красный };
Я попытался изменить linGrBrush на фиксированные цвета, такие как Color.Черный и цветной.Белый.
Я перепробовал все примеры, которые смог найти.
Ошибка, написанная VS, всегда такая же, как и выше.
Если я остановлю точку останова на проблемной линии VS флаги исключение, но проверка colorBlend не показывает никаких ошибок.
Richard MacCutchan
Я только что попробовал этот код, и он работает правильно!
Member 7807309
Спасибо Ричард,
Опубликованный код - это именно то, что я выполняю. Хотя он находится в цикле, где я меняю цвет заполнения, он терпит неудачу в первый раз через цикл.
Спасибо, что запустили код.
Джим
Richard MacCutchan
Ну, это только часть кода, который вы запускаете, так что должно происходить что-то еще.