草庐IT

c# - 在 Graphics 对象上绘制图像时出现 gdi+ 一般错误

考虑以下在Windows服务中运行的代码。Graphicsg=Graphics.FromImage(printImage);for(introws=1;rows代码在将图像缩小到另一幅图像上后绘制图像列表。它在大多数情况下工作正常,但有时会在ImagethumbImage=newBitmap的循环中间抛出异常。异常(exception)是“GDI+中发生一般性错误”。无论使用什么图像,它总是在创建第13个图像之后发生。谷歌搜索后,这似乎是保存文件时的常见问题,但这里的区别是没有保存文件。在Graphics对象上绘制图像。有人知道如何解决这个问题吗? 最佳答案

python - wxPython : GDI ressources are not release after wxFrame. 销毁()

首先,对不起我的语言,英语不是我的母语:-/我在Windows上使用wxpython2.8/python2.7时遇到了一些问题。我使用wxPython的应用程序现在非常大并且使用了很多小部件。我的问题是:在for循环中,我打开一个框架作为变量(myVar=myFrame(...)),并给它一些值/变量(比如->myVar.setval('xx',42))。然后,它将根据我的数据库中的一些请求(来自子框架)填充一些文本区域、网格等。在特征结束时,我的子框架生成一个pdf文件,并打印它,然后它用原始的self.Destroy()方法关闭自己,没有附加费,wx.Frame。使用相同的变量(示

windows - 将 GDI 转换为 XPS 时,抑制 Microsoft XPS Document Writer 上的“另存为”对话框

在他的博客条目中PrintingdocumentstoMicrosoftXPSDocumentWriterwithoutuserinteraction冯远说Ifyou'reprintingfromyourownapplications,it'seasytospecifyMXDWastheprinterdriverandprovideafilenamefortheXPSdocumenttobesavedto任何人都可以解释如何做到这一点并提供代码示例吗?我遇到的主要问题是抑制MicrosoftXPSDocumentWriter弹出的“另存为”对话框。我讨厌像Yuan在他的帖子中那样诉诸U

windows - 使用GDI+绘制PixelFormat32bppPARGB图像使用常规公式而不是预乘公式

这里是一些显示问题的最小代码:staticconstintMAX_WIDTH=320;staticconstintMAX_HEIGHT=320;Gdiplus::BitmapforegroundImg(MAX_WIDTH,MAX_HEIGHT,PixelFormat32bppPARGB);{Gdiplus::Graphicsg(&foregroundImg);g.Clear(Gdiplus::Color(10,255,255,255));}Gdiplus::BitmapsoftwareBitmap(MAX_WIDTH,MAX_HEIGHT,PixelFormat32bppPARGB);

windows - CMake 在 64 位平台上找到 32 位 GDI+

我想构建一个在32位和64位Windows上都需要GDI+的程序。我正在使用CMake3.3.2、Windows1064位、VisualStudio2015。作为最小情况,我有这个CMakeLists.txt:cmake_minimum_required(VERSION3.3)find_library(GDIPgdiplus)我在build子目录中运行它作为cmake..或cmake-Ax64..如果我比较两次运行的CMakeCache.txt,我发现它肯定选择了32位或64位选项(例如对于CMAKE_LINKER)但它找到了32位gdiplus.lib在这两种情况下//Pathtoa

c++ - 如何使用 GDI+ 库解码内存中的 jpeg?

GDI+提供了一个Image类,你可以使用这个类来读取一种格式的图像文件,然后将这个文件保存为另一种格式。但是如果我只想解码一个jpeg文件(已经加载到内存中),我该怎么做呢? 最佳答案 您可以使用SHCreateMemStream和Gdiplus::Image::FromStream#include#include#include#include...CComPtrstream;stream.Attach(SHCreateMemStream(buf,bufsize));Gdiplus::Image*image=Gdiplus::I

c# - 在非 GDI 应用程序中获取插入符位置

所以我正在编写一个辅助功能应用程序,它需要知道文本输入插入符号的位置。我尝试了GUIThreadInfo,但虽然它在记事本等基本应用程序中有效,但在处理自己的UI的更复杂的应用程序(如Chrome、iTunes等)中却失败了。有没有办法从这样的应用程序中获取插入符位置? 最佳答案 是的,行不通。插入符是user32的一个实现细节,与一个窗口相关联。像浏览器这样的应用程序不使用窗口控件,太昂贵了。而且他们不必这样做,有一个单独的API允许此类程序为屏幕阅读器等辅助功能应用程序提供接口(interface)。开始readinghere.

c++ - GDI+ 初始化使应用程序崩溃,为什么?

我有以下C++行从GDI的设备上下文中获取GDI+句柄://HDChDC=devicecontextfromGDIif(hDC){//ObtaingraphicshandleforGDI++Graphics*pgrpx=newGraphics(hDC);//Igetinvalidmemoryexceptionhere//Codecontinues//...//Freeobjectdeletepgrpx;pgrpx=NULL;}它在我的测试中运行良好。但最近我收到了该应用程序的故障转储,在我在上面代码中指出的那一行出现了“它无法访问的线程引用的内存位置”异常——就在图形对象应该被初始化的

c# - 与 C#/WinForms 中高度优化的 GDI 代码相比,SharpDX 能带来多少改进?

几年来,我一直在开发C#/GDI图形应用程序。我花了很多时间优化绘图代码。我通过每秒大约10次使PictureBox控件无效并利用Windows触发它时发生的后续OnPaint事件来绘制到屏幕。OnPaint事件使我可以通过PaintEventArgs参数访问Graphics对象。每帧:我画了数百条线,数百个矩形,我也调用了数百次Graphics.DrawString()方法。我开始整理一个SharpDX项目,希望我可以绘制更多2D元素,并更快地绘制到屏幕上。我设置了2个测试项目,使用GDI和SharpDX在屏幕上绘制相同的2D元素。我使用C#StopWatch对象来检测绘制所有2D元

windows - 在 Windows 上混合使用 OpenGL 和 GDI

我正在尝试找出一种在Windows中混合OpenGL渲染和GDI的方法。以前我一直在将我的OpenGL内容渲染到一个帧缓冲区对象中,将其提取出来,然后将其blit到WindowsGDI图形上下文中,然后在顶部绘制我的GDI内容。这确实会降低帧速率。我想做与我现在正在做的相反的事情,所以我的OpenGL渲染是直接在窗口上完成的,然后我将GDI东西渲染到一个位图,该位图被上传到一个纹理,然后使用四边形覆盖。GDI的东西并没有太大改变,所以我不需要每帧都重新绘制它,我可以只缓存纹理。我几乎可以让它工作,问题是我似乎无法从GDI位图中获得正确的alpha值,因此文本和线条会出现可怕的锯齿。有没