2009-04-26 12 views
5

Tengo un visor de imágenes que escribí en Flex que escala el tamaño de la imagen que está viendo según el tamaño del navegador. Esto es lo que se ve la etiqueta como:Calidad de escala de imagen de Adobe Flex

<mx:Image id="img" 
    maintainAspectRatio="true" 
    source="{horizontalList.selectedItem.image}-large.jpg" 
    height="100%" 
    horizontalCenter="0" 
    horizontalAlign="center" 
    top="5" 
    width="{horizontalList.width}" 
    updateComplete="onImageChange()" 
    click="onImgClick()" 
    /> 

El tamaño de la imagen original es siempre mayor que el área del navegador, y por desgracia, Flex no parece estar haciendo un muy buen trabajo de reducción de escala de la imagen. De hecho, HTML en IE hace un trabajo mucho mejor si utilizo su etiqueta de imagen. ¿Existe una configuración de "calidad" para escalar en Flex que me falta?

Gracias.

Respuesta

0

Este es un punto de molestia con Flex 3 - usando una imagen en un control de lista. Tienes que tener mucho cuidado para obtener la escala correcta.

¿Por qué no intentar jugar con diferentes combinaciones de scaleContent y maintainAspectRatio propiedades de controles Image?

Aquí hay un tutorial sobre scaling Imágenes.

+0

Gracias por la respuesta. Mi control de imagen no está dentro de un control de lista. Simplemente usa un control de lista separado como referencia al tamaño en sí mismo. Leí el tutorial que enlazaste, pero realmente no hablaba sobre la calidad de la imagen. Mi pregunta básica es: ¿cómo se controla la calidad cuando se reduce la escala de una imagen? De forma predeterminada, Flex parece tener muchos problemas de aliasing al reducir la imagen. Gracias. –

0

intenta establecer el ancho y el alto del control a las dimensiones de la imagen y establecer la propiedad scaleContent a la verdadera propiedad

0

conjunto scaleContent a cierto

1

Aprender sobre el Flash Smoothing Issue que descubrí hace unos años y escribí en mi blog. Básicamente, las imágenes que tienen una dimensión impar no se suavizan.

Para solucionar este problema, utilice el siguiente fragmento:

var smoothBitmapData : BitmapData = new BitmapData(
    loadedBitmap.width + (loadedBitmap.width % 2), 
    loadedBitmap.height + (loadedBitmap.height % 2), 
    true, 0x00FF0000); 
smoothBitmapData.draw(loadedBitmap, null, null, null, null, true); 

smoothBitmap = new Bitmap(smoothBitmapData, PixelSnapping.NEVER, true);