Hay una manera en XAML para crear un color de un objeto a partir de un nombre de color con diferentes personalizado nivel de transparencia? por ejemplo,

<Label Background="{SkyBlue;220}" />

Sé que esto no funciona, pero solo quería citar un ejemplo.

tal vez con un tipo de convertidor de msdn.microsoft.com/en-us/library/…

OriginalEl autor dotNET | 2013-02-27

2 Comentarios

  1. 27

    Uno de esos momentos en los que encontrar la respuesta de usted. Aquí es la manera correcta para cualquier lector:

    <Label.Background>
        <SolidColorBrush Color="SkyBlue" Opacity=".9" />
    </Label.Background>

    Opacity oscila entre 0 y 1, siendo 1 opacos (no transparentes).

    Editar

    Relacionada con @Dai el comentario de este método, de hecho, no se reinicia o se anula el nivel de transparencia del color especificado en caso de que usted está haciendo referencia a un color recurso que ya ha establecido algunos transparencia. Por ejemplo, si el recurso es de color SkyBlue con transparencia a 0,5, y ahora quiere que sea el 0,7 lugar, el método anterior no funciona directamente.

    A manejar esa situación, todo lo que necesita hacer es crear un poco de Converter que restablece el componente alfa de la entrada de color. Algo como esto:

    public class NoTransparencyConverter : IValueConverter
    {
      public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
      {
        var C = ((Color)value);
        return Color.FromArgb(0xFF, C.R, C.G, C.B);
      }
    
      public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
      {
        throw new NotSupportedException();
      }
    }

    y, a continuación, utilizar en su XAML:

    <SolidColorBrush Color="{Binding Path="YOUR_COLOR_RESOURCE" Converter={x:Static NoTransparencyConverter}}" Opacity=".9" />
    Sólo por curiosidad, ¿cómo podría hacer esto para el sistema definido por los pinceles? En este caso estamos creando un SolidColorBrush, pero si quería aplicar una opacidad a un sistema de cepillo, no sé si es un SolidColorBrush, GradientBrush, etc., y si esto último, habría que replicar el color se detiene y todo lo demás. Única cosa que puedo pensar es que de alguna manera crear un pincel convertidor.
    ¿Sabe usted de cualquier sistema de cepillo que no es SolidColorBrush?
    El fondo para las barras de herramientas. Tienen un degradado. De hecho estoy trabajando en una solución ahora. Creo que he encontrado uno. Implica una extensión de marcado, de un objeto proxy y regular de la interfaz IValueConverter! 🙂
    Incluso mejor… esto es exactamente lo que yo quería lograr! stackoverflow.com/a/24227295/168179 he creado un BrushOpacityConverter que clones el pasado-en el cepillo y los cambios de su opacidad. Bingo!
    Lamentablemente esto no restablecer o anular la opacidad del color en sí, estoy tratando de volver a usar un <Color> en un importados ResourceDictionary que ya está en 0.5 la opacidad y la configuración de Opacity="0.5" se refiere a la actual prestados opacidad es ahora 0.25.

    OriginalEl autor dotNET

  2. 20

    Sólo para añadir un poco de este. Sí, es absolutamente posible establecer el Opacity vía declarativa como se mostró en su respuesta, pero usted ni siquiera tiene la Propiedad de Dependencia establecido, puede hacerlo directamente en el hex del color mediante la utilización de la Alpha en la parte superior de su RGB valores. Donde, como, digamos que tienes el valor para Negro y quieres darle un poco de opacidad. Los 2 primeros octetos de que el valor añadido que para lograr la misma cosa.

    Como ejemplo;

    “#000000” = Negro (SÓLIDO)

    donde como;

    “#33000000” = Negro (Con 20% De Opacidad)

    “#77000000” = Negro (Con Un 47% De Opacidad)

    “#E5000000” = Negro (Con Un 90% De Opacidad)

    Acaba de lanzar algunos elaboración de ahí y, potencialmente, ayudar a usted en el futuro, cuando la Opacity propiedad no puede ser tan fácilmente disponible, o se establece como inmutable. Espero que esto ayude.

    ANEXO: también vale la pena señalar que un valor a una propiedad de tipo alfa siempre será más eficiente que la configuración de una opacidad a la totalidad de un elemento. Esto también se aplica a HTML/CSS escenarios donde en algo como background-color: rgba(0,0,0,.5) es una mejor práctica que decir <div style="background: black;opacity: .5)

    Gracias Chris. Que sin duda podría ser útil para alguien leyendo esto en el futuro. El punto que usted puede haber perdido aquí es que quiero cambiar la opacidad de la “llamada” de los colores, como se mencionó en la pregunta del título. Así, por ejemplo, no tengo ni idea de lo que es el valor hexadecimal de la Celeste.
    Es #6698FF para referencia en el futuro. Todos los nombres de los colores provienen de hex originalmente y se puede encontrar fácilmente con un viaje rápido a la automática de google. 🙂 Saludos
    Todos los nombres de los colores tienen los valores hexadecimales de las especificadas en el intellisense para el código detrás, como si estás en el VS

    OriginalEl autor Chris W.

Dejar respuesta

Please enter your comment!
Please enter your name here