草庐IT

windows - QT:直接渲染到 DC 的滚动小部件

我正在尝试创建一个小部件,它通过调用getDC()并向其绘制HBITMAP来直接绘制到Windows设备上下文。我正在绘制的小部件位于滚动小部件内。我已经实现了paintEvent(),它看起来确实在绘画,但在绘画之后,小部件立即再次被涂上了空白的灰色。我试过设置WA_PaintOnScreen和Qt::WA_NoSystemBackground但这些都没有帮助。理论上这应该是可能的,因为这基本上就是GLWidget的工作方式。我错过了什么? 最佳答案 在这里找到答案:http://www.qtchina.net/qt4c++gui

windows - 如何获得 GDI+ 路径的简单 "block"轮廓?

假设我有一个相对复杂的GDI+GraphicsPath,其中有“漏洞”。文本就是一个很好的例子,比如字母“O”。我想改造这条路径,以便我可以完全填满它,包括“洞”。我该怎么做? 最佳答案 科迪,我没有看到你已经接受了答案,所以我把这个C#函数放在这里让你看看它是否有帮助。已经过测试。与上面的版本略有不同:这个例程寻找边界面积最大的路径,所以它比上面的版本更慷慨一点,因为它不需要“主”路径通过2个测试来证明它值得保留。我把它变成了一个扩展方法,所以在.Net中你可以这样写:GraphicsPathsolid=LetterPath.To

windows - 如何使用 GDI 函数在 OpenGL 使用的 DC 上绘图?

如何使用GDI函数在OpenGL使用的设备上下文(DC)上绘制?这意味着如何将GDI函数和OpenGL一起使用。假设我有一个DC,这个DC已经用来初始化OpenGL了。 最佳答案 你最好不要这样做。从技术上讲,混合OpenGL和GDI仅适用于单个缓冲窗口。对于双缓冲窗口,GDI调用仅在缓冲区交换后才有意义。但到底为什么要混合使用OpenGL和GDI? 关于windows-如何使用GDI函数在OpenGL使用的DC上绘图?,我们在StackOverflow上找到一个类似的问题:

c++ - 在 C++ (Win32) 中快速获取 Windows 应用程序屏幕截图的方法?

当我的应用程序需要获取其他Windows应用程序的屏幕截图时,我遇到了问题。我正在使用win32api'PrintWindow'中的函数,但效果不佳。它很慢,其他应用程序窗口中的一些组件显示为黑色矩形。Devrexster有一个名为DExpose2的应用程序(Mac-OS风格的任务切换器)。它可以非常快速地获取其他应用程序的屏幕截图,非常快,甚至可以连续获取这些屏幕截图。我猜它是使用Direct3D来获取应用程序的屏幕截图,而不是像我正在使用的那样使用GDI。是否可以为此目的使用Direct3D?如果可能,哪种方法最简洁? 最佳答案

windows - 强制窗口重绘整个屏幕

我目前正在使用GDI绘制图形,但我需要能够重绘整个桌面/屏幕。我的图形绘制在屏幕上,但是当我移动绘制的像素时,它会变成一条线,因为我没有重绘屏幕(Windows不是)。我需要一些东西来强制它重绘整个屏幕,我尝试了以下方法:UpdateWindow(GetDesktopWindow());InvalidateRect(GetDesktopWindow(),NULL,TRUE);SendMessage(GetDesktopWindow(),WM_PAINT,NULL,NULL);它们似乎都不起作用,我只需要重绘整个屏幕。 最佳答案 如果

c++ - CreateDC 和 wglMakeCurrent 的问题

PIXELFORMATDESCRIPTORpfd={/*otherwisefineforawindowwith32-bitcolor*/};HDChDC=CreateDC(TEXT("Display"),NULL,NULL,NULL);//alwaysOKintipf=ChoosePixelFormat(hDC,&pfd);//alwaysOKSetPixelFormat(hDC,ipf,&pfd);//alwaysOKHGLRChRC=wglCreateContext(hDC);//alwaysOKwglMakeCurrent(hDC,hRC);//!readerror:0xbaad

windows - 绘制自定义 Windows 控件时出现问题

我正在尝试使用Windows中的uxTheme库绘制我自己的自定义控件,但我无法弄清楚为什么我的控件看起来不像(据说)使用与我相同主题的常规Windows控件'我使用:上图显示了一个标准的WindowsComboBox(顶部)和我使用ComboBox主题绘制的自定义控件(底部)。我无法弄清楚为什么我的控件的边框与标准控件的形状和颜色不同。在我的类构造函数中,我打开主题数据:mComboTheme=OpenThemeData(hwnd,L"COMBOBOX");然后在WM_PAINT的处理程序中,我只绘制了ComboBox组件的两个部分:caseWM_PAINT:{PAINTSTRUCT

c++ - GDI+ 双缓冲 : backbuffer dual-colored monochrome

我正在尝试使用C++、windowsapi和GDI+构建一个非常简单的图形应用程序。第一次尝试构建应用程序时,出现了严重的闪烁,因此此代码尝试使用双缓冲,但失败了。hdcBuf是后台缓冲区。当尝试使用GDI+Graphics::DrawCachedBitmap将某些内容绘制到后台缓冲区时,位图被绘制为黑白双色。LoadBitmapRes从EXE资源创建一个CachedBitmap;此函数适用于单缓冲。代码有什么问题吗?提前致谢!全局:CachedBitmap*fish;HDChdc;HDChdcBuf;HBITMAPhbmpBuf;Graphics*gfxBuf;WM_CREATE:h

c# - 将 OpenGL 用于桌面应用程序是否合理?

我一直在编写一个小型桌面小工具类型的应用程序,它在屏幕底部显示滚动文本(类似于旧的CNN新闻自动收报机),但是GDI的性能并不令人满意(高达8-12%在四核上,20%在单核上),即使在我尝试清除瓶颈之后也是如此。我正在考虑使用OpenGL来渲染所有内容,但我不知道这是否是要求用户为这样的小应用程序提供硬件加速的合理选择。有人对此有任何意见吗? 最佳答案 如果您对使用OpenGL感到满意,并且您的目标用户对OpenGL带来的额外依赖性感到满意,那么我建议您使用它。:)就继续使用GDI而言,我会确保您尽可能多地渲染文本(通过渲染到位图和

windows - 两个DC是否可以共享一个GDI对象(画笔、笔等)?

两个设备上下文(DC)可以共享一个GDI对象,例如画笔或笔吗? 最佳答案 SelectObject的文档提到一次不能将位图选择到一个以上的DC中。本质上这是因为GDI操作可以写入位图,同时管理多个写入操作会很复杂。然而,所有其他GDI对象一旦创建(区域除外-但它们总是被复制)是不可变的,因此对于一次被选入多个DC没有限制。 关于windows-两个DC是否可以共享一个GDI对象(画笔、笔等)?,我们在StackOverflow上找到一个类似的问题: https