我在使用Win API GetWindowDC获取绘制的有效hDC时遇到困难。使用GetWindowDC进行绘图
我使用vb.net 2013,我试图bitblt图像到窗体,绘制字符串,绘制矩形,什么也没有。
我在Win7中运行所有的测试。
我是否必须禁用DWM功能的航空,是一个处理技巧,或者是什么?我已经发布了一个“draw titlebar vb.net 2013”的问题,没有答案,我使用了一些代码,但现在,我只需要一个工作示例即可开始。所有的帮助表示赞赏。
但是这里有更多的代码不起作用。
Select Case m.Msg
Case WinAPI.Win32Messages.WM_NCPAINT
Dim hDC As IntPtr = WinAPI.GetWindowDC(m.HWnd)
Dim g As Graphics = Graphics.FromHwnd(hDC)
g.DrawString("TESTE", New Font("ARIAL", 16), New SolidBrush(Color.Black), 5, 5)
g.Dispose()
WinAPI.ReleaseDC(m.HWnd, hDC)
的错误是内存不足,并没有得到任何地方绘制,即使做clientarea测试。
这是一个简单的目的。开始绘制一个表单的所有区域,然后,我将处理该图形。
那么,至少在正确编辑的帮助,谢谢。关于Graphics.FromHDC,是的,我试过了。
但是,这里有更多的代码不起作用。
Select Case m.Msg
Case WinAPI.Win32Messages.WM_NCPAINT
Dim hDC As IntPtr = WinAPI.GetWindowDC(m.HWnd)
Dim g As Graphics = Graphics.FromHwnd(hDC)
g.DrawString("TESTE", New Font("ARIAL", 16), New SolidBrush(Color.Black), 5, 5)
g.Dispose()
WinAPI.ReleaseDC(m.HWnd, hDC)
错误是OutOfMemory,即使对clientarea进行了测试,任何地方都不会得出任何错误。
这是一个简单的目的。开始绘制一个表单的所有区域,然后,我将处理该图形。反对票太糟糕了。没有帮助,因为如果那些在负面投票中速度很快的人......试图在阅读所有提出的问题时尽可能快地发现它不仅仅是“给我一个编码” - 另一个引用的问题有代码。
人说知道很多忘记,一旦你在哪里我一样,并没有了解很多的主题......可能甚至不知道如何提出正确的问题...
感谢帮助,如果有人可以提供。
*“Plz giev me teh codez”*不是应该成为stackoverflow问题的一部分。您需要显示**您的**代码,并提出具体问题。你想渲染到客户区还是窗口的非客户区?应用程序是否在您的控制之下?你有什么尝试?那是如何失败的? – IInspectable
[WM_NCPAINT](https://msdn.microsoft.com/en-us/library/dd145212.aspx)的文档包含有效的示例代码。 – IInspectable