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