使用C ++代码直接在IMFMediaBuffer上绘制一个矩形

时间:2012-10-17 05:49:09

标签: windows-8 microsoft-metro windows-runtime ms-media-foundation

目前,我尝试修改Media Foundation Transform的样本。我倾向于实现以下

  • 使用C ++代码执行面部检测。
  • 将检测到的面部坐标传回C#代码。
  • 让C#在屏幕上绘制检测到的面部矩形。

我完成了第1步。但是,我在第2步被吮吸。我面临类似的问题:How to get feedback from MediaCapture API in Windows 8。我找不到办法,制作我的C ++ MFT代码,与C#代码交谈。

我在想另一种解决方法。 使用C ++代码直接在IMFMediaBuffer上绘制一个矩形。

但是,我没有看到Microsoft提供此类API。如果没有,我可以使用的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

如果你可以设置像素颜色,那么绘制带有循环的矩形应该相当简单。

for (int y = top; y <= bottom; y++)
    for (int x = left; x <= right; x++)
        pixels[y * width + x] = color; // pseudocode

仅绘制一个矩形的边框只有4个独立的循环。

绘制圆圈的最简单方法:

for (int y = -r; y <= r; y++)
    for (int x = -r; x <= r; x++)
        if (x * x + y * y < r * r)
            pixels[(center.y + y) * width + center.x + x] = color; // pseudocode