草庐IT

c++ - 图像从 24 bpp 格式转换为 16 bpp 格式

我有一张图像,即使用WindowsGDI调用(24bpp)绘制的图像,我需要将此图像转换为16bpp。这是在WindowsMobile上。24bpp-RGB(rrrrrrrrggggggggbbbbbbbb)16bpp-RGB(rrrrrggggggbbbbb)为此我使用下面的代码for(intx=0;x>3|(*iPixel&0x001F0000)>>5;}代码工作正常,但性能不是很好,因为我是逐像素修改的。您能否就此转换提出任何可能的改进建议?提前致谢 最佳答案 您的代码不完整;您不显示指针的类型或如何递增它们。您对每个像素执行

c++ - 是否可以复制 GDI 句柄?

或者在我的特定情况下是Windows区域(HRGN)?更新:问题如下:我有一个对象集合,其中每个对象都可以包含一个HRGN。这些区域一旦获得就会在对象被销毁时释放。由于其中一些对象存储在std::vector中,因此我必须定义一个赋值运算符。到目前为止,我只是分配了那些HRGN,但这是一个错误。如果我复制这样的对象,每个对象都会尝试删除相同的区域,而其中一个将使用不存在的区域。 最佳答案 您不能复制HRGN句柄,但您可以使用CombineRgn获得拷贝功能。 关于c++-是否可以复制GD

windows - HDC 是否使用 alpha channel ?

有什么方法可以确定HDC是否使用alphachannel?我读了Question333559和Question685684,但他们的问题是关于BITMAP的。显然,某些HDC具有alphachannel(尽管他们可能不使用它。称其为“类型1”),而其他HDC则没有(“类型2”)。我通过执行以下操作知道这一点:给定一个HDC,创建一个兼容的DC,并创建一个DIB部分。选择创建的HBITMAP到兼容的DC中。将源HDCBitBlt到兼容的DC。现在检查DIB部分位。对于2型HDC,每3个字节后有一个字节始终为0(如2552552550);对于类型1,这些字节通常为255(如25024023

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

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

c# - 以编程方式更改屏幕色彩平衡

GDI32.DLL中用于在Windows上更改色彩平衡的函数名称是什么?例如,要更改设备Gamma,我需要使用SetDeviceGammaRamp[DllImport("GDI32.dll")]privateunsafestaticexternboolSetDeviceGammaRamp(Int32hdc,void*ramp); 最佳答案 您可以调整屏幕的RGB值并使用与您提到的完全相同的功能更改其亮度:SetDeviceGammaRamp看这里:http://www.nirsoft.net/vc/change_screen_bri

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。使用相同的变量(示

c++ - 直接在窗口而不是子窗口上绘制?

关闭。本题为opinion-based。它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引文回答它。关闭7年前。Improvethisquestion上下文:在Windows上运行的nativeC++桌面应用程序。GUI使用普通的老式GDI和标准控件。应用程序本身并不富含GUI,但我使用的所有标准控件(静态、按钮、编辑和列表作为基础)要么是所有者绘制的、自定义绘制的,要么是both的混合。我的问题是关于我直接在对话框/窗口上绘制的GUI的某些部分。这些部分中的每一个都由一个矩形明确分隔,该矩形作为快速访问的属性保留,只有当它们各自的矩形与来自

c - 当 HDC 的窗口被破坏时会发生什么?

我正在编写一个库,它在底层与HWND和HDC一起工作。ReleaseDC将一个HWND作为参数,但是如果窗口已经被销毁了怎么办?Windows会自动释放HDC,还是会导致资源泄漏? 最佳答案 在Windows10上测试时,似乎在销毁窗口时自动释放使用GetDC检索的DC。创建窗口、检索DC并销毁窗口的无限循环在第一次迭代后没有增加内存使用量。为了确保某些内部引用计数不会在不递减的情况下递增,我更改了循环以从同一窗口重复获取DC。这不仅增加了每次迭代的内存使用量,而且还使我的整个系统变慢且不稳定。

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

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

c - 显示 HBITMAP

我先道歉;我是c的新手,我真的不知道自己在做什么。我正在尝试使用Windows7和c捕获和显示屏幕截图。我知道这听起来很愚蠢,最终我会在不同的程序中需要这些功能中的每一个,捕获屏幕的那个会将图像发送到显示它的那个但是现在我只是想让它们都在一个程序中工作.这是我到目前为止整理的代码:#includeboolScreenCapture(intx,inty,intwidth,intheight){//getaDCcompat.w/thescreenHDChDc=CreateCompatibleDC(0);//makeabmpinmemorytostorethecaptureinHBITMAP