Direct2D,在一个窗体上绘制的图像,将此图像再绘制到另一个窗体时,会产生0x88990015"在错误的呈现器目标上实现资源"错误,因为画刷等资源都是第一个窗体的渲染目标创建的,不能绘制到其他窗体。那么能否先绘制一个共享的图像,再把它绘制到不同窗体呢?
我是初学,最好给出具体代码,AI回答的不采纳,谢谢!
Direct2D,一个图像如何绘制到不同窗体?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
31条回答 默认 最新
阿里嘎多学长 2024-11-21 20:28关注阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程
Direct2D绘制图像到不同窗体的解决方案
首先,确保你已经创建了两个不同的窗体,使用Direct2D Rendering Context来绘制图像。
你可以使用以下步骤来绘制共享的图像,并将其绘制到不同的窗体:
- 创建一个shared textures资源,用于存储共享的图像。
CComPtr<ID2D1Texture> sharedTexture; hr = D2D1CreateTextureFromFileInPlace( filename, &D2D1_TEXTURE_OPTIONS_SHARED, NULL, &sharedTexture );- 创建一个 Direct2D Rendering Context,以便绘制图像到共享的图像。
CComPtr<ID2D1RenderTarget> renderTarget; hr = d2dFactory->CreateD2D1RenderTarget( windowWidth, windowHeight, D2D1_RENDER_TARGET_OPTIONS_NONE, &rendertTarget );- 使用共享的图像绘制到渲染目标。
hr = renderTarget->DrawImage( sharedTexture.Get(), 0, 0, windowWidth, windowHeight );- 在需要绘制图像的窗体上,使用共享的图像绘制到渲染目标。
CComPtr<ID2D1RenderTarget> targetRenderTarget; hr = d2dFactory->CreateD2D1RenderTarget( targetWindowWidth, targetWindowHeight, D2D1_RENDER_TARGET_OPTIONS_NONE, &targetRenderTarget ); hr = targetRenderTarget->DrawImage( sharedTexture.Get(), 0, 0, targetWindowWidth, targetWindowHeight );通过上面的步骤,你便可以将共享的图像绘制到不同的窗体。
注意:在上面的代码中,
d2dFactory是 Direct2D Factory 对象,而windowWidth和windowHeight是窗体的宽度和高度。同时,targetWindowWidth和targetWindowHeight是目标窗体的宽度和高度。如果你需要更多帮助,请提供更多的细节和代码,以便更好地回答你的问题。
解决 无用评论 打赏 举报