2010-07-18 12 views
8

Çok çok büyük bir uygulama olacak bir uygulama yazmak isteyip istemediğimi sordum.WPF'de çoklu ekranlar için nasıl bir uygulama yazıyorsunuz?

Sorum şu: Bunu yapmanın en iyi yolu nedir?

Sadece (1024x3) x (768x3) olan bir uygulama mu yazarım? Bunu geliştirme zamanında nasıl yapabilirim? Uygulamanın çalışmasını göremiyorum ya da belki RenderTransform ile ölçekleri 1024x768'e geri döndürebilir ve bu dönüşümü kurulum zamanında kaldırabilir miyim?

Sistemin performansı hakkında ne düşünüyorsunuz? Harika bir grafik kartı ile her şeye güç veren çok güçlü bir PC'ye sahip olacağız, ancak WPF bu büyük boyutlu uygulama ile baş edebilecek mi?

+0

Çok yüksek çözünürlükte görüntülenmesi gereken 9 (veya daha fazla) ayrı form/pencere veya bir veya iki form/pencere var mı? – ChrisF

+0

temel olarak tek bir ekran olarak 9 ekranı ele alıyoruz. – Mark

+0

Gerçekten değil;) 9 ayrı pencere var mı - her ekran için bir tane. Bu durumda, her birini ayrı bir "tam ekran" uygulaması olarak kabul edebilirsiniz. – ChrisF

cevap

1

İki yıl önce böyle bir uygulama yazdım (Bir uygulamadan daha çok kesilmişti ama müşteri bununla mutluydu).

Her ekran için bir pencere kullandım ve pencereleri ekranlara eşleyen bir yapılandırma yaptım (Ortamımda, tüm monitörler aynı çözünürlüklere sahip değildi). Ayrıca tüm pencereleri tek bir ekrana yerleştirebilmem için ölçekleme kullandım (dev-makinemde).

Hatırladığım kadarıyla, beş veya altı PC ve 20'den fazla ekranımız vardı. Bazı bilgisayarlarda NVidia Quad-grafik kartı vardı, diğerleri sadece iki monitöre sahipti.

Hatırladığım şey, dört grafik kartının performansının çok az olmasıydı. Güzel görsel efektler eklemek mümkün değildi. Benim projemde bu büyük bir sorun değildi ve bu yüzden neden bu kadar yavaş olmasının nedenlerini daha derinlemesine kazdım. Belki sadece bir yapılandırma problemiydi. Ancak , bu gibi bir çoklu monitör-PC üzerinde, test için çok fazla zaman harcamadan önce bir çok test yaptığınızdan emin olun, daha sonra görsel yavaşlığı nedeniyle bu uygulamanın kullanılamaz olduğunu belirtmek için.

uygulama görsel bir çok değişiklik olacak ve burada, bir kabul edilebilir kare hızına bazı thoughs onları görmek istiyorsanız: grafik kartı her ekran için hw-rendering destekliyorsa

  • kontrol. Değilse, 9 ekran için doldurma oranı çok büyük olacak ve performansı düşecektir.
  • Projeniz için, genellikle 'dan dikkat edin DropShadowEffect gibi efektler. hesaplamaları, kirli bölgelere bütün sert alanlar veya büyük bölgelerin yeniden tanımlanacağı şekilde etkileyebilirler. Gereksiz çizimin gerçekleşmeyeceğinden emin olmak için perforator kullanın. Bu ölümcül olabilir.
  • Büyük ekranı daha küçük olanlara bölebilirsiniz (ekran başına bir Pencere). Bu , size enkoder sorunları yaşarsanız size daha fazla esneklik sağlar. 'un bazı alanları diğerlerine bağımlıysa, , 5 ucuz bilgisayar kullanmayı düşünün, 'u bir ana yapın ve WCF aracılığıyla 'u bağlayın. Pc başına iki monitörler oluşturun.Eğer istedi çünkü

Undelete yazı

sildikten sonra cevabımı silinmemiş. Ancak, 50'den fazla kez görülemeyecek bir görüşe sahip değiliz ki, korkum haklı değil. Ve yazdığım gibi, projemde çok daha yüksek bir dağınıklık kararı aldık. Sadece 1024 * 768 ve iki yıl sonra, performans belki de bir sorun değil. Ama ben ilgilenirim.

+0

umarım, WPF iki yıl içinde performans açısından önemli ölçüde iyileşti. Merak ediyorum, WPF'yi nerede kullanıyorsunuz? Bu kadar güçlü kartların başa çıkamayacağı garip geliyor, ama belki de GPU yerine CPU üzerinde oluşturulan efektleri kullanıyordunuz? – Mark

+0

Bu dar iki yılda büyük bir performans artışı olacağını düşünmüyorum. Uygulamanız yalnızca statik verileri gösteriyorsa, bir sorun yaşamayacaksınız. Değilse görsel performansa dikkat edin. Bazı fikirler için gönderimin güncellemesine bakın. Etkiler için: Herhangi bir BitmapEffects kullanmadım ve aynı zamanda render etmede kötü bir etkisi olan başka hiçbir Etkiyi kullanmadım. Uygulamanın ana şey görüntüleri görüntülüyordu. Bir fark büyüktü. Hatırlıyorum, en monitörler 1680 * 1050 ile çalışıyor, 1024 * 768 ile iki kat daha yüksek doluluk oranı veriyor. – HCL

+0

fikri, uygulamaların büyük bir monitörde çalışan devasa bir uygulama olmasıdır. Bu günlerde, videoların ve promo-materyallerin bağlı olduğu yığınların olduğu, mağazalarda bu günlerde gördüğünüz gibi, yan yana çalışan 9 farklı uygulama değil. her neyse), performans araçlarını ve ipuçlarını biliyordum, ama sanırım gerçekten aradığım şey, bu, performans açısından bile mümkün olacak mıydı? (ama biliyorum, elbette ne yaptığınıza bağlı). – Mark

1

Windows.Forms WPF için

SystemParameters.VirtualScreenHeight ve SystemParameters.VirtualScreenWidth kullanmak içinde SystemInformation.VirualScreen bir göz atın. WPF'nin bununla nasıl baş edeceğinden emin değilsiniz, en azından çözünürlüğü biliyorsunuz.

+0

http: //mostlytech.blogspot.com/2008/01/maximizing-wpf-window-to-second-monitor.html buraya bir göz atın – nomail

+0

teşekkürler nomail, ama gerçekten ne olduğumu değil ... – Mark

+0

Merhaba Mark! 9 ekranlı bir ekran kartı kullanacak mısınız (maliyetin ne kadar olduğunu bilmek istemiyorum)? Bir laboratuvarda gördüğüm kadarıyla 3 PC kümesini kullanıyorlar (toplamda 6 monitör). Her çerçeve bu PC'ler arasında bölünür ve LiveWall'daki alana bağlı olarak hesaplanır. Bana sormama neden olursa, sisteminiz nasıl çalışır? çünkü yakın gelecekte benzer bir şey yapmak zorunda kalabilirim ve herhangi bir ipucu takdir edilecektir. Teşekkürler! – nomail

İlgili konular