2011-05-12 19 views
8

Consideremos el siguiente ejemplo:¿Cómo evitar que los colores se mezclen?

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Top"> 
    <Line Stroke="Red" X1="0" X2="100" Y1="50" Y2="50"/> 
    <Line Stroke="Red" X1="50" X2="50" Y1="0" Y2="100"/> 
</Grid> 

A pesar del hecho de que ambas líneas tienen SolidColorBrush y ambos tienen opacidad = 1, una mezcla de color todavía se produce: el píxel en el punto de intersección es de color rojo más oscuro.

¿Por qué ocurre y cómo puedo evitarlo?

Gracias!

P.S Este es otro ejemplo del mismo código con los cepillos explícitamente definidos:

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Top"> 
    <Grid.Resources> 
     <Style TargetType="{x:Type Line}"> 
      <Setter Property="Stroke"> 
       <Setter.Value> 
        <SolidColorBrush Color="Red" Opacity="1" /> 
       </Setter.Value> 
      </Setter> 
     </Style> 
    </Grid.Resources> 

    <Line X1="0" X2="100" Y1="50" Y2="50" /> 
    <Line X1="50" X2="50" Y1="0" Y2="100" /> 
</Grid> 
+0

+1 buena pregunta. – jv42

Respuesta

7

Es posible que desee ver en snapping to pixels. Esta es una característica de WPF que permite cierta granularidad adicional en el renderizado. Decir si tomamos una Line y aplicamos esto:

<Line X1="0" X2="100" Y1="50" Y2="50" SnapsToDevicePixels="True"/> 

Como un ejemplo de lo que esto sirve para hacer, aquí está una imagen del artículo enlazado:

enter image description here

+2

Oh, hombre, es la segunda vez que la respuesta a mi pregunta es SnapsToDevicePixels. Realmente debería comenzar a prestar más atención a esa propiedad. ¡¡Gracias!! – VitalyB

Cuestiones relacionadas