Direct2D中缺少矩形操作

时间:2012-11-29 22:49:43

标签: direct2d rect

Direct2D有D2D1_RECT_F

{
    FLOAT left;
    FLOAT top;
    FLOAT right;
    FLOAT bottom;
}

它与GDI RECT结构类似,只是它使用浮点值。

typedef struct tagRECT
{
    LONG    left;
    LONG    top;
    LONG    right;
    LONG    bottom;
} RECT;

GDI提供所有那些RECT操作函数,如

BOOL IntersectRect(
   _Out_  LPRECT lprcDst,
   _In_   const RECT *lprcSrc1,
   _In_   const RECT *lprcSrc2
);

BOOL SubtractRect(
   _Out_  LPRECT lprcDst,
   _In_   const RECT *lprcSrc1,
   _In_   const RECT *lprcSrc2
);

我无法相信Direct2D不会为D2D1_RECT_F提供类似的功能。

我想我可以创建矩形几何,并以任何我想要的方式组合它们,但这是创建和分配对象而不是简单的数学。 或者我想我可能只是创建自己的版本。

我错过了什么吗?感谢。

1 个答案:

答案 0 :(得分:0)

对于IntersectRect,Direct2D有ID2D1Geometry::CompareWithGeometry,它将决定两个几何之间的关系,这对你有用。请注意,此函数仅返回两个几何的关系,例如overlap,contains,它不会像IntersectRect那样返回交集矩形。

对于SubtractRect,Direct2D没有这样的功能,你需要自己编写。