Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在WPF文本框中设置单个字符的字体大小_C#_Wpf_Animation_Storyboard_Font Size - Fatal编程技术网

C# 在WPF文本框中设置单个字符的字体大小

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; //

我正在尝试制作一个动画,捕捉TextChanged事件,并使新添加的角色从fontsize 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);
        }
    }

您不能使用WPF中的标准文本控件对文本进行这种级别的控制。你将需要深入研究人类的深层世界。使用此最低级别的功能,您可以完全控制显示的每个字符。从链接页面:

字形是给定字体中字符的物理表示形式。字符可能有许多字形,系统上的每个字体都可能为该字符定义不同的字形

glyph run表示一组连续的glyph,这些glyph都具有相同的字体和大小,以及相同的客户端绘图效果(如果有的话)

这是一个关于MSDN的好页面,介绍了
Glyph
s和
GlyphRun
s,其中显示了一些代码示例:


更新>>>

另一种方法可以用来增加部分文本的大小,那就是操纵
文本框中的
运行
元素,但我认为这对文本输入不起作用。查看这里关于StackOverflow的帖子,了解一个例子(仅用于文本输出)

最后,我认为如果您创建一个
char
s集合,并使用自定义动画
StackPanel
将它们显示在
ListBox
中,并将
Orientation=“Horizontal”
设置为
ListBox.ItemsPanel
,您就可以随心所欲了。您可以简单地在添加每个项目时设置其动画。以下是一些关于如何创建自定义动画面板的有用文章,从简单开始,变得更复杂:




您最好的选择可能是使用
RichTextBox
。您将能够操纵单个字符。