我遇到了一个问题,我需要使用Symbol
字体在树视图项(属于符号字符集)中显示一些字符,而其他字符使用默认的系统字体( Windows 7 上的Segoi UI
自定义绘图允许我们使用不同的字体绘制不同的项目,但我想使用不同的字体绘制相同的项目字符串,因为它适用于字符串中的每个字符,如上所述。
所以,我所做的不是那么令人满意的结果w.r.t.当项目数量更远时,在水平滚动上绘制性能是这样的:
上面的方法(我为了简洁而省略了一些细节)是有效的但是有一些问题让我在这里发布这个问题并寻找一种替代方式:
问题:
我创建的水平滚动条控件是托管"内部"树视图窗口底部的树视图控件。但是,当项目数超出树视图客户区可垂直容纳的数量时,最后一个可见的树视图项会被滚动条控件遮挡。这可以通过不使滚动条成为树视图的子项并将其托管在树视图窗口正下方来解决。但我不想这样做,因为滚动条通常应该是树视图的子窗口。
这是主要的一个。由于我在每个水平滚动条上自己绘制项目,因此水平滚动时的绘图性能非常慢,并且在滚动时也会导致闪烁。
任何想法都会受到高度赞赏,因为我在过去的一周里一直在努力解决这个问题而没有成功。
如果你想看看我采取的方法,我也可以在这里发布相关的代码,但我确信有一个更好的办法,必须有一些其他人会面对这个问题并在过去解决了它。
提前致谢。
答案 0 :(得分:0)
自定义绘制可让您随意绘制项目。您不限于每个项目使用一种字体。当您收到NM_CUSTOMDRAW
通知时,请在提供的HDC上为指定项目绘制您想要的任何内容。您可以用一种字体绘制文本,用不同的字体绘制文本,等等。确保返回CDRF_SKIPDEFAULT
,以便TreeView本身不会尝试在项目上绘制任何内容。
答案 1 :(得分:0)