Залить в Кривой с прозрачным градиентом и сохранить его с#
ОБНОВЛЕНИЕ :
Цитата:Реализация обязанности и достижения формы разрешения только одного цвета, чтобы использоваться в качестве ключа прозрачности. Невозможно иметь различные уровни прозрачности.
Привет,
На самом деле я работаю с Windows Forms и GDI+.
У меня есть фон с цветом, который я делаю прозрачным, когда позже сохраняю свое изображение в формате png.
Я должен нарисовать несколько полигонов на этом фоне.
Мне также нужно нарисовать замкнутую кривую, заполненную линейной градиентной кистью, переходящей от белого к прозрачному цвету.
Проблема в том, что когда я сохраняю форму в формате png, градиентная кисть переходит от белого к темно-серому/черному. Это похоже на то, как если бы я потерял желаемую прозрачность, когда заполняю свою кривую градиентной кистью.
У меня есть что-то вроде этого. :
https://image.noelshack.com/fichiers/2020/37/1/1599462293-transparent.png[^]
Красная часть прозрачна (она без градиентной кисти).
Спасибо за всю помощь, которую вы можете мне оказать.
Что я уже пробовал:
Это моя градиентная кисть :
LinearGradientBrush linGrBrush2 = new LinearGradientBrush(closedCurveRect, Color.FromArgb(94, 94, 94), Color.Transparent, LinearGradientMode.Vertical);
И я пытаюсь заполнить свою замкнутую кривую вот так :
g.FillClosedCurve(linGrBrush2, closedCurve.ToArray(), FillMode.Alternate, tension);
Когда я сохраняю свое изображение, я преобразую свой фон в прозрачный :
bmp1.MakeTransparent(Color.FromArgb(94, 94, 94)); bmp1.Save(filename + ".png", pngEncoder);
Richard Deeming
Первый аргумент к тому, чтобы Color.FromArgb
это альфа-значение, поэтому ваша кисть заполняется от "полностью прозрачного серого" до "полностью прозрачного". Я не думаю, что это действительно принесет какую-то пользу.
Mineodo68
Привет,
Извините, я забыл изменить это значение (это было для моего теста). Это без значения Альфа.
Gerry Schmitz
Вы говорите, что используете градиент, который переходит в прозрачный, на прозрачном фоне. В какой момент прозрачность перестает быть прозрачной?
Mineodo68
Да, ты это понял. Часть моего изображения (нарисованного без градиентной кисти) прозрачна. Но вся часть с градиентной кистью не прозрачна...
Mineodo68
Я просто загрузил картинку для иллюстрации.
Gerry Schmitz
То, что вы хотите, вероятно, возможно, но это зависит от программы / фреймворка. Краска.Сеть хорошо справляется с прозрачностью, а MS Paint-нет. Немного повозился.
https://stackoverflow.com/questions/4988869/how-do-i-set-the-background-colour-of-a-transparent-png-wpf
Mineodo68
Я уже делал что-то подобное, но это работает только с цветом без градиента.
Спасибо за вашу помощь, может быть, кто-то что-то найдет.
Gerry Schmitz
Если вы "понимаете градиент", вы должны быть в состоянии выбрать то, что вы хотите; даже если это означает использование определенного цвета в качестве "маски" ... как это делают в кино при замене фона. (Или используйте технику "распыления краски" и сделайте свой собственный градиент)