我正在使用 Direct2D 绘制自定义图表。该图表在图表一侧绘制了 x 轴和 y 轴标签。当我垂直缩放图表时,一些数据将绘制在 x 轴标签的顶部,我希望始终保持轴标签的清洁。将绘画区域限制为自定义矩形而不是整个控件的最佳方法是什么?
我有几个想法,但我不确定是否有更好的方法来做到这一点:
方法1)
使用 GDI 样式并在一个面板上绘制图表区域,在另一个面板上绘制轴标签。这样,当我绘制到图表面板时,我就不会弄乱轴标签。问题是我将不得不制作更多的 Direct2D 对象(至少为每个控件 (hWnd) 呈现目标),并且我不确定这样做会影响性能。
方法2)
每次更新轴标签时将其复制到位图,然后在图表面板命令之后将这些位图绘制到控件顶部。这比方法1便宜吗?
方法3)
在每次绘图操作中手动检查像素位置,并在必要时进行修改。这似乎是最糟糕的选择。
编辑:
方法4)
与方法 1) 相同,但使用 GDI+ 绘制轴标签并仅对图表使用 Direct2D。
方法5)
使用 ID2DLayer。我刚刚从MSDN 文档中找到了这个功能。这似乎是我正在寻找的东西,但它带有许多关于频繁使用的性能影响的警告。
你的意见?