当前位置:编程学习 > C#/ASP.NET >>

inkcanvas 的画线跟文字混写的问题

在inkcanvas中,画线中,需要绘制文字在上面,以前采用在inkcanvas的children中添加 textblok
代码段:
            
TextBlock ret = new TextBlock();
            inkCanvas.Children.Add(ret);
            ret.Text = diagramItem.content;
            ret.Width = diagramItem.width;
            ret.TextWrapping = TextWrapping.Wrap;
            InkCanvas.SetLeft(ret,  diagramItem.x);
            InkCanvas.SetTop(ret,  diagramItem.y);

但是添加的文本总是在画笔墨迹 的下面,我的想法最后画的总在最上层覆盖了下面的墨迹或者文字。后面经摸索,通过VisualTreeHelper获取到ContainerVisual
代码段:
//层容器
            AdornerDecorator dronerdec = (AdornerDecorator)VisualTreeHelper.GetChild(inkcanvas, 0);
            //获取层容器的元素
            InkPresenter inkpresenter = (InkPresenter)dronerdec.Child;
            ContainerVisual strokecontainervisual = VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(inkpresenter, 1), 1) as ContainerVisual;

            DrawingVisual visual = new DrawingVisual();
            var drawingContext = visual.RenderOpen();
            drawingContext.DrawText(
                new FormattedText(
                    diagramItem.content,
                    System.Globalization.CultureInfo.CurrentCulture,
                    FlowDirection.LeftToRight,
                    new Typeface(new FontFamily(), FontStyles.Normal, FontWeights.Normal, FontStretches.Normal),
                    12,
                    Brushes.Black),
                    new Point(diagramItem.x, diagramItem.y));
            drawingContext.Close();

            strokecontainervisual.Children.Add(visual);

通过DrawingVisual能绘制文本,但是画笔画的墨迹产生时会对 VisualCollection里面的默认加到最后的System.Windows.Ink.Renderer.StrokeVisual的后面,而不是加到集合的最后,所以在此请求各位大侠搞过inkcanvas的指点迷津? --------------------编程问答-------------------- 没看明白。
是要文字在画线的上面么?试试设置一下TextBlock的IsHitTestVisible属性(鼠标穿透)。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,