<degrafa:LinearGradientFill id = "bluedream">
<degrafa:GradientStop color = "#6ab5d0"/>
<degrafa:GradientStop color = "#388aae"/>
</degrafa:LinearGradientFill>
<degrafa:GeometryComposition graphicsTarget = "{[bgCanvas]}">
<degrafa:RoundedRectangle id = "color_preset" fill = "{bluedream}"/>
</degrafa:GeometryComposition>
У меня проблема с кодом degrafa, в котором я определил набор различных градиентов для color_preset.fill, которые будут динамически изменяться, когда пользователь выбирает другой цвет в поле со списком.
Я заменил fill = "{bluedream}" на fill = "using_variable", что привело к сообщению об ошибке: Инициализатор для 'fill': значения типа com.degrafa.core.IGraphicsFill не могут быть представлены в тексте.
Есть ли решение использовать этот код в качестве средства смены цвета?





Свойство fill в вашем примере указывает на LinearGradientFill с идентификатором bluedream. Вы можете заменить заливку другим градиентом (сплошной или другой заливкой) или изменить цвета самой градиентной заливки:
<degrafa:LinearGradientFill id = "bluedream">
<degrafa:GradientStop color = "{your_combobox.selectedItem}"/>
<degrafa:GradientStop color = "{your_other_combobox.selectedItem}"/>
</degrafa:LinearGradientFill>
<degrafa:GeometryComposition graphicsTarget = "{[bgCanvas]}">
<degrafa:RoundedRectangle id = "color_preset" fill = "{bluedream}"/>
</degrafa:GeometryComposition>
Я не запускал этот код, но он должен работать. Идея состоит в том, чтобы изменить цвет GradientStop с помощью selectedItem раскрывающегося списка (при условии, что это строка). В этом примере происходит нечто очень похожее, но с палитрой цветов вместо раскрывающегося списка: http://degrafa.org/source/CS4IconPreviewer/CS4IconPreviewer.html