首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >限制DirectX上的绘图区域

限制DirectX上的绘图区域
EN

Stack Overflow用户
提问于 2012-11-09 05:03:35
回答 1查看 455关注 0票数 2

我正在使用Direct2D绘制一个自定义图表。图表的一侧绘制有x轴和y轴标签。当我垂直缩放图表时,一些数据将绘制在x轴标签的顶部,并且我希望始终保持轴标签的清洁。将绘制区域限制为自定义矩形而不是整个控件的最佳方式是什么?

我有一些想法,但我不确定是否有更好的方法来做到这一点:

方法1)

Go GDI样式,在一个面板上绘制图表区域,在另一个面板上绘制轴标签。这样,当我绘制到图表面板时,我就不会弄乱轴标签。问题是我将不得不创建更多的Direct2D对象(至少为每个控件(HWnd)呈现目标),并且我不确定如果这样做会对性能产生什么影响。

方法2)

每次更新轴标签时,将它们复制到位图中,然后在图表面板命令之后,在控件顶部绘制这些位图。这比方法1便宜吗?

方法3)

手动检查每个绘图操作上的像素位置,然后在必要时进行修改。这似乎是最糟糕的选择。

编辑:

方法4)

与方法1相同),但使用GDI+绘制轴标签,并仅对图表使用Direct2D。

方法5)

使用ID2DLayer。我刚在MSDN Documentation上发现了这个特性。这似乎就是我想要的,但它也伴随着很多关于频繁使用会影响性能的警告。

你的观点是?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-09 21:27:41

你可以使用轴对齐的剪辑,这样不会太饿。

to push

to pop

来自msdn的示例:

代码语言:javascript
复制
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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13297757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档