我正在使用Direct2D绘制自定义图表。该图表在图表侧面涂有X和Y轴标签。当我垂直缩小图表时,将在X轴标签的顶部绘制一些数据,并且我想始终保持轴线标签。将绘画区域限制为自定义矩形的最佳方法是什么?
我有几个想法,但我不确定是否有更好的方法可以做到这一点:
方法1)
在一个面板上使用一个面板上的GDI样式和油漆图区域,另一个面板上的轴标签。这样,当我绘画以绘制图表面板时,我无法弄乱轴标签。问题是我必须制作更多的直接2D对象(至少对于每个控件呈现目标(HWND)),如果这样做,我不确定性能含义。
方法2)
每次更新时,将轴标签复制到位图,然后在图表面板命令之后绘制这些位图在控件之上。这比方法1便宜1?
方法3)
手动检查每个图纸操作上的像素位置,然后在必要时进行修改。这似乎是最糟糕的选择。
编辑:
方法4)
与方法1),但使用GDI 油漆轴标签,仅在图表中使用Direct2D。
方法5)
使用ID2Dlayer。我刚刚从MSDN文档中找到了此功能。这似乎是我正在寻找的东西,但它带来了许多有关经常使用性能影响的警告。
您的意见?
您可以使用轴对齐的剪辑,这不那么饥饿。
按下
pop
MSDN的样本:
pRT->PushAxisAlignedClip(
D2D1::RectF(20, 20, 100, 100),
D2D1_ANTIALIAS_MODE_PER_PRIMITIVE
);
pRT->FillRectangle(D2D1::RectF(0, 0, 200, 133), m_pOriginalBitmapBrush);
pRT->PopAxisAlignedClip();