Pregunta

Estoy haciendo una aplicación de Windows Phone 7, que consiste en obtener grandes imágenes de la web y ponerla en un ScrollViewer para el usuario para desplazarse a través. Creo que estoy golpeando una limitación de BitmapImage, sin embargo, que la imagen parece que se cortó a 2048 píxeles en cualquier altura o anchura.

Es esto una limitación conocida de Silverlight BitmapImage y hay alguna otra clase que se utiliza en este caso para permitir el desplazamiento a través de las imágenes grandes?

Gracias

¿Fue útil?

Solución

Sí, hay un límite de 2k x 2k. Esta es la limitación y una solución se describen en el libro blanco "Creación de Alto Rendimiento aplicaciones de Silverlight para Windows Phone" http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&FamilyID=3a8636bf-185f-449a-a0ce-83502b9ec0ec

  

Las limitaciones Tamaño: ya que las ventanas   cámara del teléfono es de 5 MP y la pantalla   resolución es más pequeño que el otro   plataformas, los límites para que las imágenes   pueden ser procesados ??son 2K x 2K píxeles.   Cualquier cosa más grande que será   muestreada automáticamente a una menor   resolución y la imagen perderá   algunos riqueza. Imágenes de procesamiento   Mayor que 2k x 2k Hay   escenarios en los que se necesita procesar   imágenes de más de 2k x 2k, por ejemplo, Foto   Editor o recortar imágenes. En esos   escenarios, se pueden procesar las imágenes   que son más grandes que 2K x 2K en un   archivo y, a continuación, mostrar una parte que se   encaja en 2K x 2K. Se puede utilizar el   combinación de WriteableBitmap con   LoadJpeg hacerlo. Ejemplo # 5 -   LoadingLargeImages

XAML:

<StackPanel>
    <Image Height="3000" Width="3000" Name="image1" Stretch="Fill" />
    <Button Content="Load" Height="70" Width="152" Click="btnLoad_Click" />
</StackPanel>

Código Detrás:

private void btnLoad_Click(object sender, RoutedEventArgs e)
{
    StreamResourceInfo sri = null;
    Uri uri = new                                                                           Uri("LoadJpegSample;component/Test3k3k.JPG", UriKind.Relative);
    sri = Application.GetResourceStream(uri);

    WriteableBitmap wb = new WriteableBitmap((int)this.image1.Width, (int)this.image1.Height);

    Extensions.LoadJpeg(wb, sri.Stream);
    this.image1.Source = wb;
}
  

Lo que debe saber cuando se utiliza más grande que   2k x 2k Imágenes:

     
      
  • Es significativamente más lenta a la pantalla
  •   
  • No lo utilice para la animación o paneo escenarios.
  •   

El método de cambio de tamaño de la WriteableBitmapEx también se puede utilizar para esta tarea si no hay flujo JPEG está disponible.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top