Besuchernamen an Großbildleinwand anzeigen?
-
Hallo,
ich habe ein Problem: Ich bin damit beauftragt worden, die Anzeigekomponente für eine Großbildleinwand zu erstellen.
Auf einer Messe soll das so ablaufen: Der registrierte Benutzer geht durch ein RFID-Gate, der dazugehörige Name wird aus der DB ermittelt, an meine Komponente übergeben und auf der Leinwand ausgegeben. Dieser soll dann einfach von unten nach oben durchscrollen (evtl. kurz stehenbleiben).
Wie würdet ihr das lösen? Hab schon das Ansprechen von Powerpoint in C# probiert, geht aber nicht richtig, weils bei jeder Änderung die Präsentation zurücksetzt. Deshalb wollte ich die Ausgabe selbst programmieren:
Ich erstelle dynamisch ein Label, das von YPosition1 nach YPosition2 läuft (jeweils 30ms pro 3 Pixel). Mit einem Label gehts einigermaßen gut, aber sobald ich mehrere hintereinander hänge oder mehrere Zeilen habe, fängt es arg an zu ruckeln. ControlStyles.AllPaintingInWmPaint und ControlStyles.OptimizedDoubleBuffer habe ich beides auf true. Ich muss das ganze Transparent halten, da es auf ein anderes Programm, das u.a. das Hintergrundbild enthält, aufgesetzt wird.Wäre für jeden Tipp dankbar, denn mir läuft die Zeit davon.
Danke schonmal
-
Servus,
es gibt bei www.codeproject.com ein schönes DigitalControl mit diversen Effekten mit Hin- und Herscrollen. Das hatte ich mal für diverse Ansteuerungen von Multimetern etc. verwendet. Ich weiss allerdings nicht mehr den Namen von dem Control. Wenn du das schön auf eine Form packst im Vollbildmodus kommt das bestimmt auf einem Großbild richtig gut.
Ich denke mal ihr werdet das Produkt nicht kommerziell nutzen, von daher sehe ich dort keine großen Probleme das zu verwenden. Bei Zweifel, den Chef fragen *g*
mfg
Hellsgore
-
Danke für die Antwort. Falls du das meinst: http://www.codeproject.com/staticctrl/digidisplay.asp
das scheint mir recht wenig zu bringen, da die Digitalanzeige hier absichtlich ruckelt. Ich muss aber die Namen von unten nach oben möglichst "smooth" und ruckelfrei bewegen.
Zur Zeit bin ich soweit, dass ich je Namen dynamisch ein Label erstelle und per Timer alle 2-3px nach oben rutsche. So wies aussieht, kann ich den Timer aber minimal auf ~30ms einstellen, bei weniger hat es keine Auswirkungen, ich vermute, Windows verhindert das Refresh eines Objekts öfter als alle 30ms (kann das sein?).Am liebsten würde ich alle Label alle 10ms um 1px nach oben schieben. Das wäre flüssig und schnell. Leider kommt noch dazu, dass ich bei 10 Labels schon eine Prozessorauslastung von ~90-100% habe.
Bin schon am Überlegen, ob ich das ganze per Direct3D mache, um auch die GPU etwas zu belasten, zur Zeit geht ja alles über die CPU. Aber wie ist das dann mit der Transparenz?
Fragen über Fragen und keine Zeit dafür
-
Evtl. irgendwie DirectShow und Video-Overlay ?
-
hmm, ist DirectShow und Video-Overlay nicht nur für Videos? Habe aber nur ein Hintergrundbild und muss während der Laufzeit die Namen der durchs Gate gehenden Leute anzeigen bzw. durchscrollen. (Weiß zwar nicht, was die daran finden, aber einige stehen da voll drauf, ihren Namen da vorn zu sehen
)
-
Hmm, ich glaub VideoOverlay geht sowieso nich wirklich, da ja der Bereich wo das Overlay-Bild angezeigt wird vorher in ner bestimmten Farbe glaube ich eingefärbt wird - Was nich unbedingt transparenz-tauglich ist ;/
Die einfachste (wenn auch nich schönste) Variante wäre vermutlich einfach 2 Beamer zu benutzen und das Bild zu überlagern (Beamer1: Normale Präsentation, Beamer2: Dein programm das den namen scrolled mit weissem Hintergrund)
Problem natürlich dass das Bild heller und weniger kontrastreich wird, mal abgesehen davon dass man erstmal 2 Beamer braucht