我正在尝试制作一个动画,我抓住TextChanged事件并让新添加的字符从我的字体大小0变为设定大小。
我有动画工作,但是,当我输入一个新角色时,文本框的整个内容随之改变,但我只想要按下的键。
这是我的代码:
private void CreateTextboxAnimation(TextBox box)
{
// Info Needed By Control
double FontSize = box.FontSize;
//
DoubleAnimation Anim = new DoubleAnimation();
Anim.From = 0.0;
Anim.To = FontSize;
Anim.Duration = new Duration(TimeSpan.FromMilliseconds(100));
Anim.AutoReverse = false;
SB = new Storyboard();
SB.Children.Add(Anim);
Storyboard.SetTargetName(Anim, box.Name);
Storyboard.SetTargetProperty(Anim, new PropertyPath(TextBox.FontSizeProperty));
}
private Storyboard SB;
private void TestBox_TextChanged(object sender, TextChangedEventArgs e)
{
if (TestBox.IsLoaded == true)
{
SB.Begin(TestBox);
}
}
答案 0 :(得分:2)
您无法使用WPF中的标准文本控件对文本进行该级别的控制。您将需要深入研究Glyph
s and GlyphRun
s的深层世界。使用此最低级别的功能,您可以完全控制显示的每个字符。从链接页面:
字形是给定字体中字符的物理表示。字符可能有许多字形,系统上的每个字体都可能为该字符定义不同的字形。
字形运行表示一组连续的字形,这些字形都具有相同的字体和大小,以及相同的客户端绘制效果(如果有)。
以下是MSDN上介绍Glyph
和GlyphRun
的一个很好的页面,其中显示了一些代码示例:
Introduction to the GlyphRun Object and Glyphs Element
更新>>>
您可能用来增加部分文本大小的另一种方法是操纵Run
中的TextBox
个元素,但我认为它不会起作用文字输入。请查看StackOverflow上的WPF How to arrange TextBlock with different Fontsize at bottomline帖子,以获取该示例(仅用于文本输出)。
最后,我只是认为如果您创建char
的集合并在ListBox
中使用自定义动画StackPanel
并{ {1}}设置为Orientation="Horizontal"
。您可以简单地为每个项目添加动画。以下是一些有关如何创建自定义动画面板的有用文章,从简单开始并变得更复杂:
How to create a Custom Layout Panel in WPF
Creating a sliding panel in WPF
Animated WPF Panels