草庐IT

windows - 如何重新分配 Gdiplus (GDI+)?

我需要使用我的应用程序重新分发gdiplus.dllv.1.1,并确保使用这个特定版本。例如。WindowsXP有系统版本的gdiplus.dll但不能升级(v.1.0)。但是如果我把我的gdiplus.dll放到应用程序文件夹中,系统仍然使用。为什么?如何解决?MSDNsays:IfyouareredistributingGDI+toadownlevelplatformoraplatformthatdoesnotshipwiththatversionofGDI+natively,installGdiplus.dllinyourapplicationdirectory.Thisputs

windows - gdi对象保存在哪里?

应用程序获取的gdi对象是否存储在应用程序虚拟内存空间中为Windows内核保留的2GB虚拟内存空间?如果有,请提供相关链接 最佳答案 它们存储在内核中,参见MarkRoussinovich'sblogentryonUSERandGDIobjects. 关于windows-gdi对象保存在哪里?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8457587/

c - C 和 Windows GDI 中的双缓冲*框架*

背景:我的客户有一个非常广泛的专有表单库,它在C中有效地实现(实际上,它是一种专有的面向对象的语言,基本上包装Windows控件并与它们交互SendMessage()、SetStyle()等)我要解决的问题:每当我在上述框架中实现的应用程序中拖动/调整顶层窗口(或拖动拆分器)时,都会出现大量闪烁。顶层窗口被重新绘制,它包含的任何控件都会重新绘制。问题1:有没有办法通过外科手术将双缓冲引入表单库。特别是,我想知道是否可以使用标准WindowsGDI函数实现双缓冲。例如,如果我可以使顶层窗口进行双缓冲,这样顶层窗口的所有子窗口也自动进行双缓冲绘制。一个更好的选择是能够在任意窗口上引入双缓冲

c# - 有没有办法在不使用 GDI+/WinForms "Graphics"类的情况下检索设备的 DPI?

是否可以使用nativewinapi调用从c#获取我的设备DPI?我知道如何从Windows窗体应用程序获取dpi,我当前的代码是:Graphicsg=Graphics.FromImage(newBitmap(10,10));varscaleX=g.DpiX/96.0f;varscaleY=g.DpiY/96.0f;我想知道这是否是一个可以使事情变得更容易的winapi调用。 最佳答案 aWMIQuerytotheWin32_DesktopMonitorclass呢??PixelsPerXLogicalInchDatatype:ui

windows - 使用GDI显示图像的红色 channel

我有24位RGB图像。我只想使用GDI在显示器上显示红色channel。我应该为此使用调色板吗?使用什么策略?请适本地指导我。 最佳答案 最快的方法是使用BitBlt。创建另一个与RGB图像大小相同的24位位图。用纯红色填充它。然后使用BitBlt和SRCAND。如documentation中所述这个CombinesthecolorsofthesourceanddestinationrectanglesbyusingtheBooleanANDoperator. 关于windows-使用G

windows - 如何增加 Windows 10 的最大 GDI 对象数量?

在网上搜索并没有找到足够的答案我不得不再次提问:有什么方法可以增加Windows10的GDI对象的最大数量?我正在使用的应用程序是用VB6编写的,带有一些第三方控件(可能会从控件泄漏),并且它使用大量子窗口来显示应用程序中的数据。编辑:该应用程序本身旨在创建非常大的用户控件的多个实例。每个控件都包含经过大量修改的第三方网格、工具栏和窗口窗体。表单本身可以打开不同的用户控件(带有网格、工具栏和表单)等等。因此创建了大量句柄。我们总是寻找漏洞并立即修复它们,但不幸的是,并不是所有的漏洞都是漏洞,而是应用程序设计的副作用(这是在我之前设计的)。我尝试了几件事,从增加下面的注册表值[HKEY_

c++ - 使用 GDI 将文本旋转 90 度

我想在GDISurface上绘制文本并将该文本逆时针旋转90度。我更愿意使用DrawText来绘制文本,因为它支持回车。我尝试使用带有lfEscapement的字体(请参阅下面的代码),但该行未旋转-一条线呈现在另一条线上。有没有可能旋转文本?还是在不旋转的情况下渲染并旋转整个设备上下文?普通文本布局:旋转(期望的结果):caseWM_PAINT:{hdc=BeginPaint(hWnd,&ps);LOGFONTlf={0};HANDLEhFont;ZeroMemory(&lf,sizeof(LOGFONT));lf.lfWeight=FW_NORMAL;lstrcpy(lf.lfFa

windows - 我怎样才能知道我的进程被允许创建多少个 GDI 对象?

有一个注册表项,我可以在其中检查(和设置)当前为进程设置的GDI对象配额。但是,如果用户更改该注册表项,该值将保持旧值直到重新启动。在我的程序中,我需要知道是否有办法以编程方式确定我可以创建多少个GDI对象。是否有获取当前进程的GDI信息的API?在系统层面呢? 最佳答案 总是很难证明API的绝对缺失,但这个API是95%不行的。许多系统设置都是通过注册表配置的,没有API可以在之后进行调整。RaymondChen对此类问题的典型回答是“如果你想知道,那你就做错了”。它适用于此,默认的10,000个句柄配额是巨大的。

c++ - 使用类似于 Inspect 的 GDI+(或 GDI)在屏幕上绘图

我正在尝试使用GDI+在屏幕上(整个屏幕,在所有其他窗口的顶部)绘图。我已将NULL传递给GetDC以将HDC显示到屏幕上,然后使用它创建一个Graphics对象,并使用DrawRectangle在屏幕上绘制矩形。一切正常......除了......矩形内部不会更新。就像我在命令提示符上绘制它并移动命令提示符一样,矩形的内部仍然是黑色。我希望看到矩形下方的内容。这是绘图的代码..PenBluePen(Color(255,0,255,0),2);Graphicsgraphics(screenDC);graphics.DrawRectangle(&BluePen,myRect);非常简单,

windows - 将 hwnd GDI 调用重定向到系统内存位图?

我有一个第3方ActiveX控件,我想在其他表示技术(Direct3D和WPF)中呈现。为此,我需要ActiveX渲染到系统内存位图而不是屏幕。我知道有办法做到这一点,但不知道从哪里开始。我不害怕做任何native方法Hook,但我不确定从哪里开始。我在想BeginPaint(...)可能是热门票...有没有人这样做过或看到过周围的例子/sample?顺便说一句,我不想​​做WM_PRINT类型的解决方案。我宁愿此代码是被动的,而不是主动的并强制hwnd重新绘制。编辑:两个答案对我来说都是正确的,所以我给了每个答案+1。我希望有一个较低级别的解决方案来更加灵活,但目前这已经足够了。