gdi相关内容

如何确定DIB是自下而上还是自上而下?

如果使用CreateDIBSection()创建DIB,则可以通过将BITMAPINFOHEADER结构的biHeight字段设置为负值或正值来指定是自顶向下还是自底向上.但是,如果我在这样的位图上调用GetObject()来填充DIBSECTION结构,则dsBm.bmHeight和dsBmih.biHeight似乎总是正值. 当我只有HBITMAP时,是否有办法找出DIB是自上而下还是自 ..
发布时间:2020-11-13 02:16:01 其他开发

Win32 DrawText行高

我正在调用Win32 DrawText函数,以将一些文本输出到设备上下文中.文本很长,可以很好地环绕在第二行上.问题是我需要稍微减少行之间的间距(我想减小行高吗?).有关如何执行此操作的任何想法? 我只会调用DrawText两次(每行一次),但随后我必须自己进行自动换行. 还有其他方法吗? 谢谢 解决方案 一种可能性是将文本放入禁用的Rich Edit控件中.我认为这可以 ..
发布时间:2020-11-13 02:15:57 其他开发

LinearGradientBrush无法正确呈现

考虑以下来自标准System.Windows.Forms.Form 的代码 protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Rectangle test = new Rectangle(50, 50, 100, 100); using (LinearGradientBrush br ..
发布时间:2020-11-13 02:15:50 C#/.NET

HBRUSH至RGB值

可以从HBRUSH或笔刷ID获得RGB值吗?例如:我正在寻找RGB值中的GRAY_BRUSH. 解决方案 您要使用 ..
发布时间:2020-11-13 02:15:46 其他开发

GDI没有渲染,我在做什么错?

我正在尝试为使用GDI制作图形的基本框架制作一些小型游戏. 但是GDI根本不渲染任何东西,我只是得到了一个黑色的客户区域,而且我也不知道我在做什么错. 以下代码位于不断运行的游戏循环中: //render double buffered with GDI HDC frontBuffer = GetDC(m_hMainWnd); HDC ..
发布时间:2020-11-13 02:15:43 其他开发

从子线程绘图到窗口

我的应用程序已经从工作线程绘制图形了10多年了,我从没有遇到任何问题.工作者线程像这样绘制到我的HWND(由主线程创建): hdc = GetDC(hwnd); SetDIBitsToDevice() ... or StretchDIBits() ReleaseDC(hwnd, hdc); 将我的应用程序移植到其他平台后,我开始意识到在许多平台(例如macOS)上,从主线程以外的任何其他 ..
发布时间:2020-11-13 02:15:39 其他开发

如何将Windows屏幕坐标转换为屏幕截图像​​素坐标?

我需要在屏幕截图上找到一个控件.我有它的屏幕坐标.如何将它们转换为屏幕截图上的坐标? 解决方案 这全部取决于屏幕截图的大小和当前分辨率的大小. 假设屏幕截图为800x600,但您当前的屏幕分辨率为1280x720.为了找出800x600图像上的X,Y位置,您需要对1280x720屏幕上X,Y的值进行标准化. normalized_x = (x * 800) / 1280; no ..
发布时间:2020-11-13 02:15:36 其他开发

最佳的GDI绘制方法

我一生中的大部分时间都在开发交互式CD,我写了一些控制台应用程序,这些程序对我来说主要是图形化的. 这是我的方法: 我正在使用形状和图像在canava上进行绘图,图像的左侧和顶部位置存储在文件中.有没有更简单的方法?我以为使用形状对象会简化我的工作,你们觉得呢? 欢迎任何示例. 如果您认为这个问题是主观的,请投票关闭. 解决方案 正确的方法是编写OnPaint处理程 ..
发布时间:2020-11-13 02:15:33 其他开发

屏幕捕获无法使用C ++和GDI捕获整个屏幕

我通过网络进行了一些研究,发现了一些有用的代码.我进行了一些更改,以尝试捕获整个屏幕并生成一个可以通过udp数据包发送的缓冲区: #include #include #include void CapruteScreenAndSaveToFile() { uint16_t BitsPerPixel = 24; ..
发布时间:2020-11-13 02:15:27 C/C++开发

Direct2D界面和模糊文本问题

我的新应用程序将具有丰富的界面,该界面应使用透明的图标/图像等即时调整大小.对于此应用程序,我试图决定使用新的 我注意到在Direct2D环境中输出文本似乎有点模糊(尽管作为功能销售).只需在启用了硬件加速功能(或IE9)的Firefox 4中查看文本即可.似乎是由于在Direct2D文本中不像GDI那样遵守(像素)网格.有没有一种方法可以强制Direct2D使其附着在像素网格上,从而解决此问题 ..
发布时间:2020-11-13 02:15:23 C/C++开发

如何“清除" WinAPI透明窗口

我已经在Win32 C ++中创建了一个透明复选框.之所以这样做,是因为据我所知,您在本机win32中不能有一个透明的复选框,而我需要在NSIS安装程序中使用此复选框. 我的问题:重新粉刷时,我不知道如何擦除透明背景,因此可以在“透明画布"上绘画.当用户更改复选框内的文本并且我需要重新粉刷它时,这一点很重要.我想我遇到了每个人都必须使用透明窗口的问题. 清除透明窗口的方式是什么,请注意 ..
发布时间:2020-11-13 02:15:18 C/C++开发

有什么好的教程/资源可以学习Win32 GDI吗?

到目前为止,我一直在Google上进行搜索,但没有找到一个全面的好教程.是否有人知道任何可以教Win32 GDI的优秀站点或书籍? 解决方案 Petzold(正在编程Windows,现在是> = 5版)具有很好的覆盖范围. GDI已被Direct2D和DirectWrite所取代,这些版本可在Vista中使用,并且性能和灵活性大大提高.您可能要仔细检查您确实需要支持XP,而XP已经过 ..
发布时间:2020-11-13 02:13:13 其他开发

WPF中的双缓冲?

我正在WPF中开发图形控件.我以前使用GDI和C#开发了它. 我在以前的控件中使用了双缓冲,以避免某些与重绘图形控件有关的问题. 现在,当我在WPF中开发了Graph Control时,我遇到了一个问题,当我将Graph Control用作Windows窗体中的用户控件时,将其锚定到窗体上,并且在运行并调整其大小时,我可以清楚地看到两个黑色在图形控件的右下角和右下角的水平线和垂直线...我想在调整 ..
发布时间:2020-11-13 02:12:09 其他开发

如何判断字体是否支持代理对Unicode字符?

我能够找到确定字体是否支持Unicode-16字符的以下方法.不幸的是,这不适用于代理对Unicode字符,因为 GetFontUnicodeRanges 函数仅返回WCHAR(16位)参数作为输出. 这是我要做的事的一个例子: LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) ..
发布时间:2020-11-13 02:12:07 其他开发

GDI +只是GDI之上的一层还是其他新东西?

当GDI +发布时,我记得所有关于在Windows中显示内容的“新的,更快的,更好的"方式的烦恼.但是每次查看时,在我看来,它实际上只是GDI的COM包装. 是真的吗?还是GDI +真的是一个独立的图形库,只与GDI共享一些范例? 我个人不确定它如何独立,但是我从未见过一种确定的陈述. 解决方案 图形硬件加速了许多GDI功能,并且某些GDI +例程可能在下面使用GDI.但是大多 ..
发布时间:2020-11-13 02:11:05 其他开发

GDI和GDI +有什么区别?

这两个库之间有什么区别吗? 解决方案 根据有关GDI的维基百科文章: 随着Windows XP的引入,不赞成使用GDI,而是推荐其后继者基于C ++的GDI +子系统. GDI +添加了抗锯齿的2D图形,浮点坐标,渐变阴影,更复杂的路径管理,对JPEG和PNG等现代图形文件格式的内在支持,以及在2D视图管道中支持仿射变换的构成. ..
发布时间:2020-11-13 02:11:01 其他开发

Direct2D-模拟颜色键控透明位图

我当前正在更新Windows GDI应用程序以使用Direct2D渲染,并且我需要通过颜色键支持“透明"位图以实现向后兼容性. 现在,我正在使用HWND渲染目标和转换后的WIC位图源(到GUID_WICPixelFormat32bppPBGRA).到目前为止,我的计划是从转换后的位图创建一个IWICBitmap,将其Lock(),然后处理每个像素,如果它与颜色键匹配,则将其alpha值设置为 ..
发布时间:2020-11-13 02:10:58 C/C++开发

如何在纯gdi(非gdi +)中为roundrect填充渐变

仅使用纯gdi. 想法或代码都欢迎. 解决方案 创建一个圆角的rect作为路径,选择该路径作为剪切路径,然后对同一矩形进行渐变填充. MFC中的代码如下所示: int top = 10; int left = 10; int right = 200; int bottom = 200; int radius = 20; pDC->BeginPath(); pDC->RoundRe ..
发布时间:2020-11-13 02:10:54 其他开发