jjzjj

c++ - 在 Windows C++ 中从 JPG/PNG 文件创建 BITMAPINFO

我在API中有一个函数,我正在使用该函数请求一个BITMAPINFO指针。我想给这个函数一个图像。我的图像是JPG/PNG。假设我将它们转换为BMP文件,我仍然不知道如何设置这个结构。是否有我可以使用的WindowsAPI? 最佳答案 您可以为此使用GDI+。使用Gdiplus::Bitmap读取BMP/JPG/PNG/GIF::FromFile加载和Gdiplus::Bitmap::GetHBITMAP访问HBITMAP,然后访问BITMAPINFO 关于c++-在WindowsC++

c++ - Windows 上 C++ 中的位图操作

我自己有一个位图句柄,用C++,在Windows上:HBITMAPhBitmap;我想在这张图片上做一些图片识别、模式分析之类的事情。在我的大学学习中,我在Matlab中完成了这项工作,很容易根据它们的位置获取各个像素,但我不知道如何在Windows下的C++中执行此操作——我真的无法做到了解我到目前为止所读的内容。我看到了一些对外观漂亮的Bitmap类的引用,它可以让您进行setPixel()和getPixel()之类的操作,但我认为这是与.net一起使用的。我应该如何将我的HBITMAP变成我可以轻松玩的东西?我需要能够获取RGBA信息。是否有库允许我处理数据而无需了解DC和Bit

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

wpf - 有没有办法使用 native C++ 从 WPF 窗口捕获位图?

想象一下MDI应用程序中的一个文档窗口,它包含一个WPF子窗口,例如边栏。如何获得包含WPF像素和GDI(非wpf)像素的位图?我发现,在为Win7任务栏应用程序图标悬停进行缩略图预览时,我在预览中应该是WPF像素的部分变黑了。我当前的方法只是抓取文档窗口的位图捕获。然后我得到一个DC用于预览,从中制作一个内存DC,然后选择我的位图。然后我做了一些大小调整,并将内存dc位转换为真正的dc。我猜BitBlt操作没有考虑到WPF像素是硬件加速的,因此需要从图形硬件中获取这一事实。GDI中的所有内容都得到很好的管理,但是当没有WPF子窗口时,预览图像看起来很好。我想知道是否有可能从nativ

c# - 图形 DrawImage 导致带有大红色 X 的错误

我有一组位图图像,我正在循环这些图像并将它们全部写入一个新位图。基本上,我收集了一组松散的位图,并将它们一个接一个地写入一个位图,以便它们作为一个图像可见。当我从集合中的位图之一调用dc.DrawImage到新位图时,我的winform在窗体中显示一个红色的大X。当我将PictureBox.Image设置为新绘制的位图时,我得到一个红色的大X。出于某种原因,我无法在任何地方找到错误。我无法通过调试找到错误。现在,如果我只是将PictureBox.Image设置为图像集合中的其中一张图像,而无需循环并绘制到新位图上,则一切正常。为了让一切变得简单,我只使用集合中的一个位图并将该位图绘制到

c++ - Windows编程对话框背景图片

有什么好的教程或方法可以将背景图像添加到Windows对话框中吗?类似的内容:我的Recourse文件(略微修整):#include#include"WindowSettings.h"//forIDC_?,IDD_DLG//DialogBoxTemplateforIDD_DLG//IDD_DLGDIALOGEX200,100,200,350STYLEDS_SETFONT|DS_MODALFRAME|WS_POPUP|WS_CAPTION|WS_SYSMENUCAPTIONDLG_NAMEFONT8,"MSSansSerif",0,0,0x0BEGINLTEXT"DisplayDevic

c++ - C++中的简单位图图形?

我是一名Flash程序员,目前正在研究C++。在flash中,您可以创建一个位图并将其放置在屏幕上,然后使用getPixel(x,y)、setPixel(x,y,c)等方法。按ctrl+enter,您就可以开始做任何您想做的事情。我使用VisualC++2010。由于我经常使用Flash,所以我习惯了简单而简短的命令。但在C++中,更难弄清楚如何获得可以操作像素的位图。我不太了解图形引擎或3D引擎,这将是非常有用的信息,但首先我想看看我可以用像素创建什么,所以你知道创建可操作位图的简单方法吗在C++中?尽可能优化,然后我可以编写自己的drawLine、drawCurve等函数。:)

Windows CF_DIB 到剪贴板中的 CF_BITMAP

我完全没有使用过Windows编程,但现在我有一个问题想在某个程序中修复。我需要将图像放置到Windows剪贴板,并且我有指向有效DIB(设备独立位图)的原始指针(在我的实验中,dibheader版本为3)。该程序使用具有延迟剪贴板渲染的模型,这意味着首先我们使用SetClipboardData(CF_DIB,NULL)然后在WM_RENDERFORMAT消息上程序将实际数据放入剪贴板使用SetClipboardData(format,dibDataPointer)。当我打开clipbrd.exe(在windowsxp上)并选择DIBView时,我可以毫无问题地看到图像。但是在msdn

C++更改位图中的值

我正在尝试更改“cool.bmp”图像中的像素并将其绘制到已更改的窗口中。到目前为止,所有代码都正确执行,但是当我更改pix数组中的字节时,图像没有改变(是的,我正在重绘屏幕)。caseWM_CREATE://runsonceoncreationofwindowhBitmap=(HBITMAP)LoadImage(NULL,L"cool.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);if(hBitmap==NULL)::printToDebugWindow("Error:loadingbitmap\n");else{BYTE*b=::getPixArra

windows - .bmp 文件格式的最大分辨率

我制作了一个Mandelbrot分形生成器(我知道谁没有),它可以直接渲染到磁盘以生成巨大的分形。我的第一个测试是UHD4k分辨率,结果非常好(所有这些示例都是8位颜色)。所以我决定有点疯狂,在两个维度上都增加了10倍,即38400x21600。生成的文件似乎无效,因为Photoshop无法打开它,但即使在Windows资源管理器中查看文件属性也显示缺少尺寸/等。我认为限制有可能是32768,所以我尝试通过执行30000x30000来略低于该限制。这似乎仍然无效。降低到10000x10000效果很好,所以我想知道文件格式的限制是什么?文件大小应该不是问题,因为即使是10x4k分辨率的文