English 中文(简体)
WPFs 绘图文本。 DrawText 不绘制
原标题:WPFs DrawingContext.DrawText doesn t draw

我写了一个标尺控制器, 我想在它下绘制一个比例尺。 不幸的是 WPFs 绘图图文。 拖网方法( 虽然它被引用了) 并没有绘制任何东西 。 有人有同样的问题并且知道一个解决方案吗? 这是代码的一部分, 文本是在这里提供的 :

protected void RenderRulerScale(DrawingContext drawingContext)
{
    int value = 0;
    for (double x =  this.LargeUnit * (this.ActualWidth / this.Maximum);
        x < this.ActualWidth; x += this.LargeUnit * (this.ActualWidth / this.Maximum))
    {
        string unitString = (++value).ToString() + this.UnitName;
        FormattedText formattedUnitString = new FormattedText(unitString,
            new CultureInfo("en-US"), FlowDirection.LeftToRight,
            new Typeface("Arial"), 5.0, Brushes.Black)
            {
                TextAlignment = TextAlignment.Center,
                MaxTextWidth = 2 * this.LargeUnit,
                MaxTextHeight = 25.0
            };
        drawingContext.DrawText(formattedUnitString, new Point(x, (2.0 / 3.0) *
            this.ActualHeight));
    }
}

这种方法在OnRender方法中称为:

protected override void OnRender(DrawingContext drawingContext)
{
    base.OnRender(drawingContext);
    this.RenderRulerScale(drawingContext);
}
最佳回答

我终于找到了解决办法! 我认为问题在于文本的对齐。 我把它放在左边,它只是起作用了。 这是代码:

int value = 0;
for (double x = this.LargeUnit * (this.ActualWidth / this.Maximum);
    x < this.ActualWidth; x += this.LargeUnit * (this.ActualWidth / this.Maximum))
{
    string unitString = (++value).ToString() + this.UnitName;
    FormattedText formattedUnitString = new FormattedText(unitString,
        Thread.CurrentThread.CurrentUICulture, FlowDirection.LeftToRight,
        new Typeface(new FontFamily("Arial"), FontStyles.Normal, FontWeights.Normal,
        FontStretches.Normal) , 10.0, Brushes.Black);
    drawingContext.DrawText(formattedUnitString,
        new Point(x - (formattedUnitString.Width / 2.0), (2.0 / 3.0) *
        this.ActualHeight));
}
问题回答

暂无回答




相关问题
WPF convert 2d mouse click into 3d space

I have several geometry meshes in my Viewport3D, these have bounds of (w:1800, h:500, d:25). When a user clicks in the middle of the mesh, I want the Point3D of (900, 500, 25)... How can I achieve ...

Editing a xaml icons or images

Is it possible to edit a xaml icons or images in the expression design or using other tools? Is it possible to import a xaml images (that e.g you have exported) in the expression designer for editing?...

WPF: writing smoke tests using ViewModels

I am considering to write smoke tests for our WPF application. The question that I am faced is: should we use UI automation( or some other technology that creates a UI script), or is it good enough to ...

WPF - MVVM - NHibernate Validation

Im facing a bit of an issue when trying to validate a decimal property on domain object which is bound to a textbox on the view through the viewmodel. I am using NHibernate to decorate my property on ...

How do WPF Markup Extensions raise compile errors?

Certain markup extensions raise compile errors. For example StaticExtension (x:Static) raises a compile error if the referenced class cannot be found. Anyone know the mechanism for this? Is it baked ...

WPF design-time context menu

I am trying to create a custom wpf control, I m wondering how I can add some design-time features. I ve googled and can t seem to get to my goal. So here s my simple question, how can I add an entry ...

How to combine DataTrigger and EventTrigger?

NOTE I have asked the related question (with an accepted answer): How to combine DataTrigger and Trigger? I think I need to combine an EventTrigger and a DataTrigger to achieve what I m after: when ...

热门标签