限制DirectX上的绘图区域



我正在使用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();

相关内容

  • 没有找到相关文章

最新更新