当前位置: 首页 > news >正文

网站后台管理系统数据库织梦cms仿网站教程

网站后台管理系统数据库,织梦cms仿网站教程,无锡seo公司,wordpress 4.8.4 漏洞如果我们希望一个窗口覆盖用户的整个桌面#xff0c;此时就要考虑用户有多个屏幕的场景#xff08;此窗口要横跨多个屏幕#xff09;#xff0c;由于每个屏幕的分辨率和缩放比例可能是不同的#xff0c;Qt底层在为此窗口设置缩放比例#xff08;DevicePixelRatio#xf…如果我们希望一个窗口覆盖用户的整个桌面此时就要考虑用户有多个屏幕的场景此窗口要横跨多个屏幕由于每个屏幕的分辨率和缩放比例可能是不同的Qt底层在为此窗口设置缩放比例DevicePixelRatio时出了问题。 复现环境 屏幕A最大可用分辨率3840*2160 屏幕A当前设置分辨率2048*1080 屏幕A缩放比例100% 屏幕B最大可用分辨率2560*1440 屏幕B当前设置分辨率2560*1440 屏幕B缩放比例125% 注其他条件不变的情况下只要屏幕A的当前设置分辨率比B小均会出错其他条件不变的情况下只要屏幕A的当缩放比例与B不同亦均会出错。 复现步骤 1、设置窗口跨屏的代码 window-setFlags(window-flags() | Qt::FramelessWindowHint); auto hwnd (HWND)window-winId(); auto x GetSystemMetrics(SM_XVIRTUALSCREEN); auto y GetSystemMetrics(SM_YVIRTUALSCREEN); auto w GetSystemMetrics(SM_CXVIRTUALSCREEN); auto h GetSystemMetrics(SM_CYVIRTUALSCREEN); SetWindowPos(hwnd,HWND_TOP, x, y, w, h, SWP_NOZORDER ); PostMessage(hwnd, WM_DISPLAYCHANGE, 0, 0); 2、为用户桌面拍照把这个照片显示在窗口中照片布满整个窗口就能只管的看出此Bug HDC hScreen GetDC(NULL); HDC hDC CreateCompatibleDC(hScreen); HBITMAP hBitmap CreateCompatibleBitmap(hScreen, w, h); DeleteObject(SelectObject(hDC, hBitmap)); BOOL bRet BitBlt(hDC, 0, 0, w, h, hScreen, x, y, SRCCOPY); img QImage(w, h, QImage::Format_ARGB32); BITMAPINFO bmi { sizeof(BITMAPINFOHEADER), (long)w, 0 - (long)h, 1, 32, BI_RGB, (DWORD)w * 4 * h, 0, 0, 0, 0 }; GetDIBits(hDC, hBitmap, 0, h, img.bits(), bmi, DIB_RGB_COLORS); DeleteDC(hDC); DeleteObject(hBitmap); ReleaseDC(NULL, hScreen);注这段代码中img就是拍照后得到的QImage对象如何把图像渲染到窗口中的代码就不写了。 这是出错时的样子 如你所见左边屏幕的内容已经侵入右边屏幕去了 这是正常时的样子 问题影响范围 这个问题自 Qt5.x.x 到前天刚发布的 Qt6.8.2 一直存在。 无论是 Qt Widgets 窗口还是 Qt Quick 窗口都有这个问题。 解决方案思路 如果是 Qt Widgets窗口 那么你就直接用系统API来创建窗口 hwnd CreateWindowEx(exStyle, LScreenCapture, LScreenCapture, style,x, y, w, h, NULL, NULL, hinstance, NULL); 然后把 QImage 渲染到这个原生窗口中 if (img.isNull()) return; HDC hdc GetDC(hwnd); auto compDC CreateCompatibleDC(NULL); auto bitmap CreateCompatibleBitmap(hdc, w, h); DeleteObject(SelectObject(compDC, bitmap));BITMAPINFO info { sizeof(BITMAPINFOHEADER), w, 0 - h, 1, 32, BI_RGB, w * 4 * h, 0, 0, 0, 0 }; SetDIBits(hdc, bitmap, 0, h, img.bits(), info, DIB_RGB_COLORS); BLENDFUNCTION blend { .BlendOp{AC_SRC_OVER}, .SourceConstantAlpha{255}, .AlphaFormat{AC_SRC_ALPHA} }; POINT pSrc { 0, 0 }; SIZE sizeWnd { w, h }; UpdateLayeredWindow(hwnd, hdc, NULL, sizeWnd, compDC, pSrc, NULL, blend, ULW_ALPHA); ReleaseDC(hwnd, hdc);DeleteDC(compDC); DeleteObject(bitmap); 然后所有的绘图操作都在这个QImage上进行。 如果是 Qt Quick 窗口那么就要用 QQuickRenderControl 来把QML内容渲染到原生窗口中了代码过于复杂这里就不贴了详情请参考https://doc.qt.io/qt-6/qquickrendercontrol.html 总之就是不要让Qt帮我创建窗口。
http://www.hkea.cn/news/14554525/

相关文章:

  • 福州网站设计网站系统制作会议管理系统
  • 绚丽的网站欣赏手机购物app排行榜前十名
  • 八里河风景区网站建设内容摘要北京移动端网站开发
  • 无锡网站seo动画制作软件排行榜
  • 顺义区专业网站制作网站建设免费ppt下载网站有哪些
  • 哪一些网站使用vue做的中国电信收购腾讯
  • 产品推广策划方案aso具体优化
  • 百度是不是只有在自己的网站发布才会被收录山东建设和城乡建设厅注册中心网站首页
  • 国内装饰行业网站制作新手学做网站 电子书
  • 西安seo整站优化开发公司合作协议
  • 精品网站建设公司邢台营销型网站建设
  • 网站建好更新wordpress 修改建站时间
  • 网站视频制作wordpress pot
  • 网站建设 绵阳sem是什么品牌
  • 做网站聚合做权重难吗网页设计实训内容及过程
  • 食品行业网站建设西安房产网签查询系统
  • 上海营销型网站标准洛阳百姓网
  • 潍坊娜娜网站制作阿里巴巴外贸平台怎么收费
  • 品牌红酒网站建设wordpress进度条
  • 自己做培训网站wordpress小工具支持
  • 网站角色权限广西住房和城乡建设厅官网桂建云
  • 网站运营维护合同网页升级未成年人自觉离开
  • 小木桥路建设工程招投标网站网站建设与管理课程标准
  • 泉州效率网络网站建设云南网上办事大厅
  • c#做的网站怎么上传图片大学校园网站模板图片
  • 乐山网站开发有经验的大良网站建设
  • wordpress建站以后此案例中采用了什么样的网络营销方式
  • 天津个人网站备案查询微信crm系统
  • 做教育网站开源网站开发文档下载
  • 针对不同网站的cdn加速宿舍设计方案ppt