C# 在WPF文本框中设置单个字符的字体大小
我正在尝试制作一个动画,捕捉TextChanged事件,并使新添加的角色从fontsize 0淡入我设置的大小 我有动画工作,但是,当我输入一个新角色时,文本框的所有内容都会随之改变,但我只想要按下的键 这是我的代码:C# 在WPF文本框中设置单个字符的字体大小,c#,wpf,animation,storyboard,font-size,C#,Wpf,Animation,Storyboard,Font Size,我正在尝试制作一个动画,捕捉TextChanged事件,并使新添加的角色从fontsize 0淡入我设置的大小 我有动画工作,但是,当我输入一个新角色时,文本框的所有内容都会随之改变,但我只想要按下的键 这是我的代码: private void CreateTextboxAnimation(TextBox box) { // Info Needed By Control double FontSize = box.FontSize; //
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);
}
}
您不能使用WPF中的标准文本控件对文本进行这种级别的控制。你将需要深入研究人类的深层世界。使用此最低级别的功能,您可以完全控制显示的每个字符。从链接页面: 字形是给定字体中字符的物理表示形式。字符可能有许多字形,系统上的每个字体都可能为该字符定义不同的字形 glyph run表示一组连续的glyph,这些glyph都具有相同的字体和大小,以及相同的客户端绘图效果(如果有的话) 这是一个关于MSDN的好页面,介绍了
Glyph
s和GlyphRun
s,其中显示了一些代码示例:
更新>>> 另一种方法可以用来增加部分文本的大小,那就是操纵
文本框中的运行元素,但我认为这对文本输入不起作用。查看这里关于StackOverflow的帖子,了解一个例子(仅用于文本输出)
最后,我认为如果您创建一个char
s集合,并使用自定义动画StackPanel
将它们显示在ListBox
中,并将Orientation=“Horizontal”
设置为ListBox.ItemsPanel
,您就可以随心所欲了。您可以简单地在添加每个项目时设置其动画。以下是一些关于如何创建自定义动画面板的有用文章,从简单开始,变得更复杂:
您最好的选择可能是使用RichTextBox
。您将能够操纵单个字符。