我正在使用 DirectX 允许用户在 Win8 应用程序中“着色”/绘图。大部分绘图代码类似于 MS 提供的 Ink Drawing 示例。
为篇幅道歉。我正在努力简要描述这个问题。
我遇到的问题是,当用户在实时绘图模式下使用 InkStroke 绘制新线时,该新线是不可见的,除非添加了一个段(当鼠标移动时,每个完成段闪烁然后消失)。当我释放鼠标时,它会加入我的 Strokes 集合,这些 Strokes 呈现正常。也就是说,一旦你画完一条线,你尝试画的东西看起来很好/可见/就像你画的一样。
作为一个独立的 C++ 桌面应用程序,我可以正常工作。但是,我随后将 SwapChainPanel 连接到一个 XAML 页面,该页面也有一个菜单。这就是问题出现的时候。他们使用 XAML 菜单选择要在其中着色的图像,然后页面会使用桌面应用程序代码切换到“绘图模式”。相同的 SwapChainPanel 处理 XAML 页面上的上下文切换以及绘图缓冲区。我认为问题在于 XAML 页面使用与绘图缓冲区相同的 SwapChainPanel。这会干扰调用“m_d3dContext->CopyResource(_currentBuffer.Get(), _previousBuffer.Get());” 这就是捕获“当前正在绘制”线的其余较旧部分进行绘制的方式。
我怎样才能解决这个问题?是否有不涉及将其分成 2 个 XAML 页面(一个用于菜单,一个用于绘图)的解决方案,每个页面都有自己的 SwapChainPanel?即使这是最好的方法,有没有办法用一个 XAML 页面来做到这一点?