BLT图y轴标题不清楚

时间:2014-06-03 17:27:50

标签: graph tcl

我找不到为什么Y轴标题“Counts”看起来不清楚并且X轴标题确实看起来很好“时间”的原因。

TCL代码:

proc graphCreation {} \
{
global backColor
global btnColor
global xtemp yBio yPart tempgraph

    blt::stripchart .tempgraph -width 625 -height 330 -background $backColor -plotbackground white -font boldFont
    set tempgraph 1

.tempgraph configure -borderwidth 0 \
         -leftmargin 0 \
         -rightmargin 0 \
         -plotborderwidth 0 \
         -plotpadx {0 0} \
         -plotpady {0 0}

.tempgraph legend configure -hide yes
.tempgraph grid configure -color gray \
                  -dashes 1 \
                  -minor 0 \
                  -hide 0

.tempgraph axis configure x -command FormatXLabel 
                    #-shiftby 1 \
                    -stepsize 2

proc FormatXLabel {widget x} {
    set xtemp  [expr round($x)]
    return [clock format $x -format "%H:%M:%S"]
}
# Bio
.tempgraph element create Bio -symbol {} -color red -linewidth 1 \
    -smooth linear 

.tempgraph axis configure y -title "Counts" 
.tempgraph axis configure x -title "Time"
}

它的外观如下:

enter image description here

更新:我最终在图表旁边放置了一个简单的图像,取代了原生的y轴标签,它在我的情况下看起来比原生标签好很多

1 个答案:

答案 0 :(得分:1)

这是一个相当微妙的问题。唉。 BLT通过在屏幕外缓冲区中正常渲染文本然后在将结果传输到屏幕之前逐个像素地旋转生成的图像来旋转文本。如果应用适当的缓存,这是一种非常快速的技术。 (Tk 8.6使用类似的机制在某些配置中在画布上渲染旋转文本 - 那些不能直接绘制旋转文本的机制,例如经典的X11字体渲染器 - 但使用更复杂的旋转算法。)

但是,必须假设缓冲区实际上是单色的,并且任何不完全是背景颜色的像素都是前景。这意味着任何原始阴影的像素(用于抗锯齿/子像素渲染)在旋转后都会变黑。 (如果仔细观察,你也可以在旋转的文本上看到“锯齿状”。)

丑陋,不是吗?

我可以建议的唯一解决方案 - 它并不是最好的 - 是运行Tk 8.6,将图表嵌入Tk canvas中没有轴标题,并且使用画布的旋转文本功能“手动”绘制标题。这是因为Tk的旋转文本代码功能更强大;特别是,在任何进行抗锯齿文本渲染的平台上,它将旋转的字形渲染移动到系统字体引擎本身,这意味着抗锯齿在旋转后发生 并且文本看起来正确。

(披露:我在Tk中编写了旋转的文本代码。在执行此操作时,您不会相信我在各种平台中发现的错误,尤其是累积坐标舍入错误。)

解决方法是使用非常薄的字体。或者在系统级别禁用字体抗锯齿...