2010-07-18 21 views
8

Me han pedido que investigue la forma de escribir una aplicación que será una aplicación muy grande, expandiendo más de 9 pantallas a (obviamente) una resolución muy alta.En WPF, ¿cómo se escribe una aplicación para pantallas múltiples?

Mi pregunta es, ¿cuál es la mejor manera de hacer esto?

¿Acabo de escribir una aplicación que es (1024x3) x (768x3)? ¿Cómo puedo hacerlo en el momento del desarrollo? No podré ver la aplicación en ejecución, o tal vez pueda desarrollar con un RenderTransform que las escalas se reduzcan a 1024x768 y eliminar esa transformación en el momento del despliegue?

¿Qué pasa con el rendimiento del sistema? Tendremos una PC muy potente que lo alimentará todo, con una gran tarjeta gráfica, pero ¿WPF podrá hacer frente a esta aplicación de tamaño correcto?

+0

¿Hay 9 (o más) formularios/ventanas por separado o uno o dos formularios/ventanas que deben mostrarse con una resolución muy alta? – ChrisF

+0

estamos tratando las 9 pantallas básicamente como una pantalla si eso tiene sentido ... – Mark

+0

No realmente;) ¿Son 9 ventanas separadas? Una para cada pantalla. En ese caso, podría tratar a cada uno como una aplicación separada de "pantalla completa". – ChrisF

Respuesta

1

He escrito una aplicación hace dos años (era más un truco que una aplicación, pero el cliente estaba contento con ella).

Utilicé para cada pantalla una ventana y tenía una configuración que asociaba las ventanas a las pantallas (en mi entorno, no todos los monitores tenían las mismas resoluciones). También utilicé la escala para poder colocar todas las ventanas en una pantalla (en mi máquina dev).

Como recuerdo, teníamos unas cinco o seis PC y algo más de 20 pantallas. Algunas PC tenían tarjetas NVidia Quad-graphics, otras solo tenían dos monitores.

Lo que recuerdo es que el rendimiento de las tarjetas de gráficos cuádruples fue muy poco. No fue posible incluir buenos efectos visuales. En mi proyecto, este no era un gran problema y, por lo tanto, no profundicé en las razones por las que era tan lento. Quizás fue solo un problema de configuración. Pero asegúrese de hacer algunas pruebas en una PC con varios monitores antes de invertir mucho tiempo para desarrollar, para comentar después que esa aplicación no es utilizable debido a su lentitud visual.

Si su aplicación va a tener una gran cantidad de cambios visuales y desea verlos en un framerate aceptable, aquí algunos thoughs:

  • Comprobar si la tarjeta gráfica es compatible con hw-rendering para cada pantalla. De lo contrario, la tasa de llenado para 9 pantallas sería enorme y el rendimiento de disminuirá.
  • Para su proyecto, generalmente tenga cuidado con Efectos como DropShadowEffect. Pueden afectar el cálculo de las regiones sucias de forma que el pantalla completa o regiones grandes serán repintados. Use perforator para asegurarse de que no ocurran dibujos innecesarios . Esto sería fatal.
  • Si puede dividir la pantalla grande en más pequeños, lo recomendaría (una ventana por monitor). Este le brinda más flexibilidad si tiene problemas de . Si la representación de algunas áreas es independiente de otras, piense en utilizar 5 PC's baratas, haga una maestra y conéctelas a través de WCF. Renderice por computadora dos monitores .

Recuperar después de eliminar el puesto

que no haya borrado mi respuesta, ya que pidió. Pero con más de 50 puntos de vista y no un voto alternativo, parece que mi miedo no está justificado. Y mientras escribía, teníamos una resolución de pantalla mucho más alta en mi proyecto. Con solo 1024 * 768 y dos años más tarde, el rendimiento quizás ya no sea un problema. Pero me haría cargo.

+0

con suerte, WPF en dos años ha mejorado dramáticamente en términos de rendimiento. Tengo curiosidad, ¿dónde estás usando WPF? Parece extraño que tarjetas tan poderosas no puedan hacer frente, pero ¿quizás también estuviste usando efectos que fueron renderizados en la CPU en lugar de en la GPU? – Mark

+0

No creo que haya un gran aumento de rendimiento en estos estrechos dos años. Si su aplicación solo muestra datos estáticos, no tendrá problemas. Si no, ten cuidado con el rendimiento visual. Para algunas ideas, mira la actualización de mi publicación. Para los efectos: No utilicé ningún efecto BitmapEffects ni tampoco otros efectos que tengan una mala influencia en la renderización. Lo principal de la aplicación era mostrar imágenes. Una gran diferencia fue la resolución. Como recuerdo, la mayoría de los monitores funcionan con 1680 * 1050, lo que da una tasa de llenado más del doble que la que tienes con 1024 * 768. – HCL

+0

la idea es que la aplicación es una aplicación enorme que se ejecuta en un monitor enorme, similar a lo que se ve estos días en tiendas donde tienen montones vinculados reproduciendo videos y promociones, no 9 aplicaciones diferentes que se ejecutan una al lado de la otra (bueno eso es la idea de todos modos), estoy familiarizado con las herramientas de rendimiento y consejos, pero supongo que lo que realmente estaba buscando, ¿será esto posible en cuanto al rendimiento? (pero sé que, por supuesto, depende de lo que hagas). – Mark

1

Tome un vistazo a SystemInformation.VirualScreen en Windows.Forms

Para utilizar WPF SystemParameters.VirtualScreenHeight y SystemParameters.VirtualScreenWidth. No estoy seguro de cómo WPF lo resuelve, al menos sabrá la resolución.

+0

http: //mostlytech.blogspot.com/2008/01/maximizing-wpf-window-to-second-monitor.html échale un vistazo aquí – nomail

+0

gracias nomail, pero realmente no es lo que buscaba ... – Mark

+0

¡Hola, Mark! ¿Usará una tarjeta de video con 9 monitores (no quiero saber cuánto cuestan)? Por lo que he visto en un laboratorio, usan clúster de 3 PC (6 monitores en total). Cada cuadro se divide entre estas PC y se calcula según el área en el LiveWall. ¿Cómo funcionará tu sistema si no te importa que pregunte? porque podría tener que hacer algo similar en el futuro cercano y se apreciará cualquier consejo. ¡Gracias! – nomail

Cuestiones relacionadas