locked
Textbox Funktion wie in Zune RRS feed

  • Frage

  • Hallo

    Ich arbeite mit Silverlight 4 in VB.NET

    Seit einigen Tagen habe ich mich mit dem Programm Zune etwas näher beschäftigt und habe festgestellt, dass die dort in jedem
    TextBlock
    TextBox
    GridColumn

    eine schöne Funktion verwenden. und zwar wird der Text nicht einfach abgeschnitten, wenn er sich nicht ausgeht, sondern es wird ein "Fade-Out" gemacht.

    Sprich: der Text wird bei den letzten noch sichtbaren Buchstaben immer heller, bis er genau so weiß wie der Hintergrund ist. Das finde ich ein schönes Feature. Und wollte wissen, ob mir jemand erklären kann, wie ich das auch implementieren kann.

     

    Schönen Nachmittag - DANKE im Voraus

    Donnerstag, 8. Dezember 2011 12:04

Alle Antworten

  • Hallo Zero,

    Ich weiß jetzt nicht genau welches Feld du meinst, aber von der Beschreibung her könnte der Effekt ein Verlauf auf der Vordergrundfarbe sein.

    Daniel


    http://www.silverlight-community.de - deutsche Community mit Tutorials, Blogs und Usergroups
    Montag, 12. Dezember 2011 13:52
  • Hallo!

    Entschuldige bitte die wirklich verspätete Antowort!

    Ja, grundsätzlich hast Du mit Deinem Ansatz recht, der Effekt ist auf die Vordergrundfarbe anzuwenden. - Mein Problem bei dieser Überlegung ist aber, dass ich ja nicht weiß, wie groß die Textbox/oder Grid-Spalte ist und es soll ja nicht einfach jeder Text "aus-faden", sondern nur dann, wenn der Text länger ist, als die Textbox/oder Grid-Spalte.

    DANKE

    Sonntag, 18. Dezember 2011 13:55
  • Hmm, da wirst du die Textgröße anhand deines Fonts berechnen müssen denke ich.

    Als Kompromiss könntest du  das Fade Out ja auch nur auf die letzten 3 Buchstaben legen.

    Daniel


    http://www.silverlight-community.de - deutsche Community mit Tutorials, Blogs und Usergroups
    Donnerstag, 22. Dezember 2011 17:18
  • Hallo Zero_G,

    hat diesen Lösungsvorschlag bei Dir funktioniert? Vielen Dank!

    VG/Bogdan


    Ich bin gerne bei den Foren. Es kommt von Herzen. Es wird aber keine implizite oder sonstige Garantie für die geposteten Antworte / Informationen gewährt. Hier auch die Forenregeln.
    Freitag, 13. Januar 2012 09:13
  • Sorry für die späte Nachricht.

    Nein, es funktioniert nicht, denn so wie ich es schon geschildert habe: Egal wie lange die Textbox ist, wird bei dem Lösungsvorschlag immer Ein Fade-Out-Erzeugt. Ich bräuchte eher so den Ansatz: Wenn Textbox-Textlänge > Textbox dann Textlänge = FadOut.... (Ganz vereinfacht!)

    Schönen Abend

    Montag, 16. Januar 2012 18:05
  • Ja, das Stichwort ist "Berechnen". In WPF gibt es ein Objekt dafür: http://msdn.microsoft.com/en-us/library/system.windows.media.formattedtext.aspx

    Evtl. hilft dir dieser Codeschnipsel. Da wird eine Breitenberechnung anhand eines Textblockes durchgeführt:

    public static String PageText(TextBlock txtPage, String BookText) 
    { 
        TextBlock t = new TextBlock(); 
        t.FontFamily = txtPage.FontFamily; 
        t.FontStyle = txtPage.FontStyle; 
        t.FontWeight = txtPage.FontWeight; 
        t.FontSize = txtPage.FontSize; 
        t.Text = BookText; 
     
        Size Actual = new Size(); 
        Actual.Width = t.ActualWidth; 
        Actual.Height = t.ActualHeight; 
     
        if(Actual.Height <= txtPage.ActualHeight) 
            return BookText; 
     
        Double hRatio = txtPage.ActualHeight / Actual.Height; 
        return s.Substring((int)((s.Length - 1) * hRatio)); 
    }
    

    Quelle und Rahmeninfos: http://stackoverflow.com/questions/5130710/programmatically-detemining-max-fit-in-textbox-wp7

     

    Daniel


    http://www.silverlight-community.de - deutsche Community mit Tutorials, Blogs und Usergroups
    Montag, 16. Januar 2012 18:52