首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Qt:绘制高DPI QPixmaps

要在Qt中绘制高DPI的QPixmaps,你可以使用QPixmapsetDevicePixelRatio方法来设置设备像素比。这将确保绘制的像素与屏幕的物理像素匹配,从而实现高DPI的效果。

以下是一个示例代码,演示如何绘制高DPI的QPixmaps:

代码语言:javascript
复制
// 创建一个高DPI的QPixmap
QPixmap pixmap(100, 100);
pixmap.setDevicePixelRatio(devicePixelRatio());

// 创建一个QPainter来绘制
QPainter painter(&pixmap);
painter.setRenderHint(QPainter::Antialiasing);

// 在QPixmap上绘制图形
painter.fillRect(pixmap.rect(), Qt::white);
painter.setPen(Qt::black);
painter.drawEllipse(pixmap.rect().center(), 40, 40);

// 将高DPI的QPixmaps绘制到QWidget上
QPainter widgetPainter(this);
widgetPainter.drawPixmap(0, 0, pixmap);

在上面的示例中,我们首先创建了一个QPixmap对象,并使用setDevicePixelRatio方法设置设备像素比。然后,我们创建了一个QPainter对象,并使用setRenderHint方法设置抗锯齿渲染。接下来,我们在QPixmap上使用QPainter绘制了一个椭圆。最后,我们使用另一个QPainter对象将高DPI的QPixmaps绘制到QWidget上。

请注意,devicePixelRatio方法返回当前屏幕的设备像素比。这样,绘制的像素将与屏幕的物理像素匹配,从而实现高DPI的效果。

确保在绘制高DPI的QPixmaps时,你的应用程序已经启用了高DPI支持。你可以在应用程序的构造函数中使用QApplication::setAttribute(Qt::AA_EnableHighDpiScaling)来启用高DPI支持。

这样,你就可以在Qt中绘制高DPI的QPixmaps,并在高分辨率屏幕上获得更清晰和更精细的图像。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

QT】获取主屏幕DPI

注意事项在实现DPI感知时,需要确保应用程序的界面元素能够正确地缩放,以避免在DPI设置下出现模糊或过小的情况。...在编写DPI感知应用程序时,建议使用支持DPI的UI框架,如Windows Presentation Foundation (WPF)或Qt等。...QT应用qt应用程序为了默认支持高清屏,设置的DPI感知类型为Per Monitor,以下为5.15.2源码时机为程序创建第一个窗口之前,所以需要修改DPI感知类型需要在这个时机之前,否则会有warning...QCoreApplication::testAttribute(Qt::AA_PluginApplication)) { m_context.setProcessDpiAwareness...在默认qt程序下,获取主屏DPI需要先调整DPI感知类型然后再获取,否则会拿到错误的DPI值,主要利用SHCore.dll和User32.dll两个系统模块,系统不低于windows 8.1话不多说,直接上代码

14710

qt多屏不同DPI下的拖拽问题

背景在主屏设置DPI=1.5,副屏设置DPI=1.0时,将qt窗口移动到副屏,拖拽qt treeview或者listview中的元素时,会发生异常显示,位置错误等问题定位这里复现之后,考虑的就是windows...下面的Dpi感知,从任务管理器查看DPI感知为【系统】,符合预期,但是为什么还会发生这个异常问题呢仔细定位这里问题发现,出现问题是因为接管了拖拽事件,绘制对应的分割线和移动目标元素都是通过下面代码来找到拖向元素...tree_view->indexAt(tree_view->mapFromGlobal(QCursor::pos()));这里mapFromGlobal出来的坐标显然出现异常导致拖向元素不准确,出现一系列问题跟进qt...源码,发现qt在win8.1之后会自动设置DPI感知为PerMonitor类型,来避免不同DPI的多屏缩放问题QWindowsIntegrationPrivate::QWindowsIntegrationPrivate...qt来设置#if defined(Q_OS_WIN) // 设置DPIAware为SystemAware InitDpiAware();#endifvoid InitDpiAware() {

21210
  • Qt源码笔记】深谈 Qt 绘制

    之前写了一篇 浅谈Qt控件绘制 。之所以叫浅谈是因为调用都是比较表层的调用。其实 Qt绘制,可以说用 Qt 的人都有用到,但是对于绘制底层,了解的人并不见得很多。...而 QPaintEngine 根据所要绘制的内容,来区分绘制逻辑,比方说涂色采用填充 buffer 、统一刷新的方式;字体绘制要调用字体图元相关绘制逻辑等等。...所有的表层绘制都要经过绘制引擎来向下传递绘制信息。这是 Qt 作为一个高级框架的闪光点,在其他的 Qt 模块也有类似发现,比如控件的绘制上。...我也说 Windows 平台下默认的 Qt 绘制是使用指令集的。...后记 对于 Qt 绘制的深入探究,可以说是受益匪浅,这篇文章只是描述了冰山一角,其实整个流程比这个简要概括要高级的多。从研究 Qt 源码至今,对整个 Qt 项目的感受与评价,已和往日截然不同。

    2K50

    QTQT基本图形绘制

    基本图形绘制 QPainter绘制基本图形 **注意:**QPainter画弧度所使用的角度值,是以1/16°为单位的,在画弧度的时候1°用16表示。...---- QPainterPath绘制简单图形 QPainterPath为QPainter类提供一个存储容器,里面包含了所要绘制的内容的集合及绘制顺序,如长方形、多边形、曲线等各种任意图形。...当需要绘制此预先存储在QPainterPath对象中的内容时,只需调用QPainter类的DrawPath()即可,如addRect()加入一个方形,addEllipse加入一个椭圆形,addText(...---- 画笔笔刷风格 画笔风格——Qt::PenStyle 笔帽风格——Qt::PenCapStyle Qt::SquareCap 方形线端,不覆盖线的端点 Qt::FlatCap 方形线端,覆盖线的端点...); painter.setPen(m_pen); painter.setBrush(m_brush); QRect rect(50,100,300,200);//起始位置,宽

    97230

    Qt并发

    每个Qt应用程序都有一个QThreadPool::globalInstance()函数,它带有一个推荐的最大线程数,在大多数系统上,处理核的数量就是该值的默认值。...线程指南 一般情况下,要尽可能避免使用多线程,而是用Qt事件循环与QTimer、非阻塞I/O操作、信号以及短持续时间槽相结合的方法来代替。...Qt禁止跨线程的父——子关系。 1)QObject::thread()可返回它的所有者线程,或者是其关联线程。...在次线程中使用Qt的类 当函数可以同时被不同的线程安全地调用时,就称其为”线程安全的“(thread-safe)。...一个类是否是可重入的,在Qt的参考文档中有标记。通常情况下,任何没有被全局引用或者被其他共享数据引用的C++类都认为是可重入的。

    1.5K20

    Qt源码笔记】浅谈 Qt 中的控件绘制

    在工作中经常要根据 UI 提供的稿子做自绘控件,而且在新项目中,我自己基于 Qt 做了一套项目自用控件库,还会涉及到换肤,所以对 Qt 的控件绘制,着重的研究了一下。...Qt 本身的控件绘制,就可以给我们很大的启示。...绘制 Qt 考虑到对于按钮样式,开发者有着自己的需求,而对于逻辑状态可能开发者可以用现成的。...Qt绘制精髓就在于此。对于绘制Qt 控件是交给 style 来管理的。打开源码路径 qtbase\src\widgets\styles 这里边保存了 Qt 绘制的基本样式。...这就是整个 Qt 绘制的大本营了。而对于 Qt 控件的实际绘制逻辑,其实也对做自绘控件库也十分有帮助,不过既然是浅谈,也就不再罗嗦。

    2.2K40

    Windows 下的 DPI 应用开发(UWP WPF Windows Forms Win32)

    混合 DPI 感知级别 当项目足够大的时候,一个或几个项目成员可能很难了解所有的窗口逻辑。让一个进程的所有窗口开启 DPI 缩放对应用的 DPI 迁移来说比较困难。...相关 API 变化的故事 感谢 Mouri_Naruto(毛利)提供的故事,API 的具体使用也可参考他的文章:【原创】实现每显示器DPI识别(Per-Monitor DPI Aware)的注意事项...并且更早的,V2 带来的非客户区缩放和子窗口 DPI 变更消息的 API 在 1507 和 1511(分别是 Windows 10 的第一和第二个正式版本)就已经有了,不过是未公开的(可参阅 【原创】实现每显示器...只是 Windows Vista 提供了对不明确表示 DPI 支持的应用的暴力缩放(通过 Desktop Window Manager 合成实现),毕竟那个时代除了手机之外,基本没有什么屏幕涉及到 DPI...,如果你做到了 System Aware 的要求位图是不会模糊的(Vista 引入 DWM 虚拟化强制拉伸,主要是当时的引用没有做相关支持,在 DPI 情况下会控件会变得非常小且布局大概率会乱掉)。

    80650

    Qt 5.14版本更新细节

    更新了High-DPI支持: 应用程序现在可以选择使用非整数比例因子,例如Windows的150%。...添加了QT_ENABLE_HIGHDPI_SCALING环境变量,该变量可基于显示DPI进行dpi缩放。...现在,跨平台支持QT_FONT_DPI环境变量,以便使用特定的DPI值进行开发和测试。 图像的色彩空间支持。读取和写入JPEG,PNG,WebP和TIFF图像中的色彩空间,并对图像执行色彩空间转换。...添加了PathPolyline和PathMultiline作为使用Qt Quick Shape绘制和/或填充任意多边形和多边形集的附加方式。...弃用的模块   以下模块是Qt 5.14发行版的一部分,但已弃用,并考虑在后续的Qt发行版中删除: Qt Script Qt Quick Controls 1 Qt XmlPatterns 关于更多

    3.1K10

    C++ Qt开发:Charts绘制各类图表详解

    Qt中柱状图的绘制离不开三个类的支持,其分别是QBarSet、QBarSeries、QBarCategoryAxis这三个类提供了用于操作和管理条形图数据集的方法。...QPieSeries 是 Qt Charts 模块中用于绘制饼状图的数据序列类。它派生自 QAbstractSeries 类,用于管理和展示饼状图中的数据。...QPercentBarSeries 是 Qt Charts 模块中用于绘制百分比柱状图的类。...QSplineSeries 是 Qt Charts 模块中用于绘制光滑曲线的类。它表示图表中的一条曲线,通过一系列的数据点来定义曲线的形状。...QSplineSeries 主要用于绘制光滑曲线,通过添加一系列的数据点,可以在图表中呈现出相应的曲线形状。QScatterSeries 是 Qt Charts 模块中用于绘制散点图的类。

    2.1K00
    领券