我注意到,如果在BeginDraw()调用之后进行此调用,则在ID2D1HwndRenderTarget上调用GetSize()将返回0,0。否则返回正确的值。
这是“正常”行为吗?我没有在任何例子中看到过它。我确实花了几个小时在这上面摸不着头脑。
答案 0 :(得分:3)
这是正常行为。
在您的情况下,该方法返回其const定义的返回值。
virtual D2D1_SIZE_F GetSize() const = 0;
最有可能的是,该方法在内部失败,因为无法在BeginDraw/EndDraw
循环内“获取”渲染目标。
BeginDraw和EndDraw用于指示渲染目标所在 由Direct2D系统使用。不同的实现 调用BeginDraw时,ID2D1RenderTarget的行为可能会有所不同。 可以在BeginDraw / EndDraw之间锁定ID2D1BitmapRenderTarget 调用时,可以在BeginDraw上获取DXGI曲面渲染目标 在EndDraw上发布,而ID2D1HwndRenderTarget可能会开始批处理 例如,在BeginDraw上可能出现在EndDraw上。