QPainter绘图

QPainter 提供了高度优化的功能来完成大多数绘图 GUI 程序所需的工作。它可以绘制从简单的线条到复杂的形状(如馅饼和弦)的所有内容。它还可以绘制对齐的文本和像素图。通常,它在“自然”坐标系中绘制,但它也可以进行视图和世界变换。QPainter 可以对任何继承QPaintDevice类的对象进行操作。

设置QPainter

您可以自定义几个设置以根据您的喜好绘制 QPainter

font () 是用于绘制文本的字体。如果painter isActive (),您可以分别使用fontInfo ()fontMetrics () 函数检索有关当前设置的字体及其度量的信息。
Brush () 定义用于填充形状的颜色或图案。
pen () 定义用于绘制线条或边界的颜色或点画。
backgroundMode () 定义是否有背景(),即它是Qt::OpaqueMode还是Qt::TransparentMode
background () 仅在backgroundMode ()Qt::OpaqueMode并且pen () 是点画时适用。在这种情况下,它描述了点画中背景像素的颜色。
BrushOrigin () 定义平铺画笔的原点,通常是小部件背景的原点。
viewport ()window ()worldTransform ()组成了painter的坐标变换系统。有关详细信息,请参阅坐标变换部分和坐标系文档。
hasClipping () 告诉画家是否剪辑。(paint device 也剪辑。)如果painter 剪辑,它剪辑到
clipRegion ()

layoutDirection () 定义了画家在绘制文本时使用的布局方向。
worldMatrixEnabled () 告诉世界变换是否启用。
viewTransformEnabled () 告诉是否启用视图转换。
请注意,其中一些设置反映了某些绘图设备中的设置,例如QWidget::font ()QPainter ::begin () 函数(或等效的 QPainter 构造函数)从绘图设备复制这些属性。

您可以随时通过调用save () 函数保存 QPainter 的状态,该函数将所有可用设置保存在内部堆栈中。restore () 函数将它们弹回。

绘画

QPainter提供了绘制大部分图元的函数:drawPoint ()drawPoints ()drawLine ()drawRect ()drawRoundedRect ()drawEllipse ()drawArc ()drawPie ()drawChord ()drawPolyline ()drawPolygon ()drawConvexPolygon ()drawCubicBezier()。两个便捷函数drawRects ()drawLines (),使用当前画笔和画笔在给定的QRectsQLines数组中绘制给定数量的矩形或线条。

QPainter 类还提供了使用给定QBrush填充给定QRectfillRect () 函数,以及擦除给定矩形内区域的eraseRect () 函数。

所有这些函数都有整数和浮点版本。

如果你需要绘制一个复杂的形状,尤其是如果你需要重复这样做,可以考虑创建一个QPainterPath并使用 drawPath () 来绘制它。

QPainter 还提供了用给定的QBrush填充给定的QPainterPathfillPath () 函数,以及绘制给定路径的轮廓(即描边路径)的strokePath () 函数。

文本绘制

文本绘制是使用drawText () 完成的。当您需要细粒度定位时,boundingRect () 会告诉您给定的drawText () 命令将在哪里绘制。

绘制像素图和图像

有绘制像素图/图像的函数,即drawPixmap ()、drawImage ()和drawTiledPixmap ()。drawPixmap () 和drawImage () 产生相同的结果,除了drawPixmap () 在屏幕上更快,而drawImage ( ) 在QPrinter或其他设备上可能更快。

有一个drawPicture () 函数可以绘制整个QPicture的内容。drawPicture () 函数是唯一一个忽略所有画家设置的函数,因为QPicture有自己的设置。

绘制像素图和图像的高分辨率版本
高分辨率版本的像素图具有大于 1的设备像素比值(参见QImageReaderQPixmap::devicePixelRatio ())。如果它与底层QPaintDevice的值匹配,它会直接绘制到设备上,而不应用额外的转换。

例如,将设备像素比为 2 的 64x64 像素大小的QPixmap绘制到设备像素比为 2 的高 DPI 屏幕上时就是这种情况。请注意,像素图在用户空间中实际上是 32x32 像素。Qt 中根据像素图大小计算布局几何的代码路径将使用此大小。这样做的最终效果是像素图显示为高 DPI 像素图而不是大像素图。

渲染质量

使用 QPainter 获得最佳渲染效果,应使用平台无关的QImage作为绘图设备;即使用QImage将确保结果在任何平台上都具有相同的像素表示。

QPainter 类还通过其RenderHint枚举和对浮点精度的支持提供了一种控制渲染质量的方法:所有用于绘制图元的函数都有一个浮点版本。这些通常与QPainter::Antialiasing渲染提示结合使用。

RenderHint枚举为 QPainter 指定标志,这些标志可能会或可能不会被任何给定引擎尊重。QPainter::Antialiasing表示引擎应该尽可能对图元的边缘进行抗锯齿,QPainter::TextAntialiasing表示引擎应该尽可能对文本进行抗锯齿,QPainter::SmoothPixmapTransform表示引擎应该使用平滑像素图变换算法。

renderHints () 函数返回一个标志,该标志指定为此绘制器设置的呈现提示。使用setRenderHint () 函数设置或清除当前设置的RenderHints

坐标变换

通常,QPainter 在设备自己的坐标系(通常是像素)上运行,但 QPainter 对坐标变换有很好的支持。
最常用的变换是缩放、旋转、平移和剪切。使用scale () 函数将坐标系缩放给定的偏移量,使用rotate () 函数将其顺时针旋转,并使用translate () 函数将其平移(即向点添加给定的偏移量)。您还可以使用shear () 函数围绕原点扭转坐标系。有关剪切坐标系的可视化,请参见仿射变换示例。

另请参阅Transformations示例,该示例显示了转换如何影响 QPainter 呈现图形基元的方式。特别是它显示了转换顺序如何影响结果。

所有的转换操作都在转换worldTransform () 上进行。矩阵将平面中的一个点转换为另一个点。有关变换矩阵的更多信息,请参阅坐标系和QTransform文档。

setWorldTransform () 函数可以替换或添加到当前设置的worldTransform ( )resetTransform () 函数重置使用translate ()scale ()shear ()rotate ()setWorldTransform ()setViewport ()setWindow () 函数进行的任何转换。deviceTransform _() 返回从逻辑坐标转换为平台相关绘图设备的设备坐标的矩阵。仅当在依赖平台的句柄上使用平台绘制命令时才需要后一个功能,并且平台本身不会进行转换。

使用 QPainter 绘图时,我们使用逻辑坐标指定点,然后将其转换为绘图设备的物理坐标。逻辑坐标到物理坐标的映射由QPaintercombinedTransform () 处理,它是viewport ()window () 以及worldTransform () 的组合。viewport () 表示指定任意矩形的物理坐标,window ( ) 在逻辑坐标中描述相同的矩形,worldTransform () 与变换矩阵相同。

剪裁

QPainter 可以将任何绘图操作裁剪为矩形、区域或矢量路径。当前剪辑可使用函数clipRegion ()clipPath () 获得。首选路径还是区域(更快)取决于底层的paintEngine ()。例如,QImage绘制引擎更喜欢路径,而 X11 绘制引擎更喜欢区域。设置剪辑是在画家的逻辑坐标中完成的。

QPainter 的剪辑之后,绘画设备也可能会被剪辑。例如,大多数小部件会剪掉子小部件使用的像素,而大多数打印机会剪掉靠近纸张边缘的区域。clipRegion () 或**hasClipping ()**的返回值不会反映这种额外的裁剪。

构图模式

QPainter 提供了CompositionMode枚举,它定义了数字图像合成的 Porter-Duff 规则;它描述了一个模型,用于将一个图像(源)中的像素与另一图像(目标)中的像素组合起来。

两种最常见的组合形式是SourceSourceOver。源用于将不透明对象绘制到绘图设备上。在这种模式下,源中的每个像素都会替换目标中的相应像素。在SourceOver合成模式下,源对象是透明的并绘制在目标之上。

请注意,合成变换是按像素进行的。出于这个原因,使用图形基元本身及其边界矩形之间存在差异:边界矩形包含 alpha == 0 的像素(即基元周围的像素)。这些像素将覆盖其他图像的像素,从而有效地清除这些像素,而图元仅覆盖其自己的区域。

限制

如果您在 Qt 的基于光栅的绘制引擎中使用坐标,请务必注意,虽然可以使用大于 +/- 2 15的坐标,但不能保证显示使用超出此范围的坐标执行的任何绘制;绘图可能会被剪裁。这是由于short int在实现中使用了。

Qt 的描边器生成的轮廓只是在处理弯曲形状时的近似值。在大多数情况下,不可能用另一条贝塞尔曲线段来表示一条贝塞尔曲线段的轮廓,因此 Qt 通过使用几条较小的曲线来近似曲线轮廓。出于性能原因,Qt 对这些轮廓使用多少曲线是有限制的,因此当使用较大的笔宽或比例时,轮廓误差会增加。要生成具有较小错误的轮廓,可以使用QPainterPathStroker类,它具有 setCurveThreshold 成员函数,让用户指定容错。另一种解决方法是先将路径转换为多边形,然后再绘制多边形。

表现

QPainter 是一个丰富的框架,允许开发人员进行各种各样的图形操作,例如渐变、合成模式和矢量图形。QPainter 可以在各种不同的硬件和软件堆栈上做到这一点。自然地,硬件和软件的底层组合对性能有一定的影响,并且确保每个单独的操作与合成模式、画笔、剪辑、转换等的所有各种组合结合起来都是快速的,这几乎是一项不可能完成的任务,因为排列的数量。作为折衷方案,我们选择了 QPainter API 和后端的一个子集,在给定的硬件和软件组合下,我们可以保证性能尽可能好。

作为高性能引擎,我们关注的后端是:
Raster - 这个后端在纯软件中实现所有渲染,并且总是用于渲染到 QImages 中。为了获得最佳性能,请仅使用格式类型QImage::Format_ARGB32_PremultipliedQImage::Format_RGB32QImage::Format_RGB16。任何其他格式,包括QImage::Format_ARGB32,性能明显较差。该引擎默认用于QWidgetQPixmap
OpenGL 2.0 (ES) - 此后端是硬件加速图形的主要后端。它可以在支持 OpenGL 2.0 或 OpenGL/ES 2.0 规范的台式机和嵌入式设备上运行。这包括过去几年生产的大多数图形芯片。可以通过在QOpenGLWidget上使用 QPainter 来启用引擎。

这些操作是:
简单的转换,即平移和缩放,加上 0、90、180、270 度旋转。
drawPixmap() 结合简单的转换和非平滑转换模式的不透明度(QPainter::SmoothPixmapTransform未作为渲染提示启用)。
矩形填充纯色、双色线性渐变和简单变换。
具有简单变换和相交剪辑的矩形剪辑。
合成模式QPainter::CompositionMode_SourceQPainter::CompositionMode_SourceOver
圆角矩形填充使用纯色和双色线性渐变填充。
3x3 修补像素图,通过 qDrawBorderPixmap
此列表指示在性能至关重要的应用程序中可以安全使用哪些功能。对于某些设置,其他操作可能也很快,但在大量使用它们之前,建议在最终运行软件的系统上进行基准测试和验证。在某些情况下,可以使用昂贵的操作,例如当结果缓存在QPixmap中时。
另请参阅QPaintDeviceQPaintEngineQt SVG、基本绘图示例和绘图实用程序函数。

	QPainter p(this);if (text() == "圆")//椭圆{p.setRenderHint(QPainter::Antialiasing, true);p.setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));//拐点是圆形,连接也是方形p.setBrush(QBrush(Qt::green, Qt::SolidPattern));int diameter = width() > height() ? height() - 2 : width() - 2;int x = (width() - diameter) / 2;int y = (height() - diameter) / 2;p.drawEllipse(x, y, diameter, diameter);}else if (text() == "椭圆")//椭圆{p.setRenderHint(QPainter::Antialiasing, true);p.setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));//拐点是圆形,连接也是方形p.setBrush(QBrush(Qt::green, Qt::SolidPattern));p.drawEllipse(1, 1, width()-2, height()-2);}else if (text() == "矩形")//矩形{p.setRenderHint(QPainter::Antialiasing, true);p.setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::SquareCap, Qt::BevelJoin));//拐点是方形,连接也是方p.setBrush(QBrush(Qt::green, Qt::SolidPattern));p.drawRect(rect().adjusted(1,1,-1,-1));}else if (text() == "三角形")//画三角形{p.setRenderHint(QPainter::Antialiasing, true);p.setPen(QPen(Qt::NoPen/*, 1, Qt::SolidLine, Qt::FlatCap,Qt::MiterJoin*/));//拐点是尖角p.setBrush(QBrush(Qt::green, Qt::SolidPattern));int hlen = 120;int vlen = hlen / 2;int x = (width() - hlen) / 2;int y = (height() - vlen) / 2;QRect r = rect().adjusted(x, y, -x, -y);QPolygon triangle;triangle << r.topLeft() << r.topRight() << (r.adjusted(0, 0, -r.width() / 2, 0)).bottomRight();//三点坐标p.drawPolygon(triangle);    //画三角形}else if (text() == "线")//画线{p.setRenderHint(QPainter::Antialiasing, true);p.setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::SquareCap));int x1 =30;int x2 = width() - x1;QVector<QLine> lines;lines << QLine(x1, 1, x2, 1);lines << QLine(x1, height()/2, x2, height() / 2);lines << QLine(x1, height() - 1, x2,height()- 1);p.drawLines(lines);}else if (text() == "线2")//画线{p.setRenderHint(QPainter::Antialiasing, true);p.setPen(QPen(Qt::black, 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));int hlen = 20;int vlen = hlen / 2;int w = (width() - hlen)/2;int h = (height() - vlen)/2;int x1 = w;int y1 = h;int x2 = width() - w;int y2 = h;int x3 = width()/2;int y3 = h+vlen;QPolygon triangle;triangle << QPoint(x1, y1) << QPoint(x3, y3) <<  QPoint(x2, y2) ;//三点坐标p.drawPolyline(triangle); //画箭头}else if (text() == "圆角矩形")//圆角矩形{p.setRenderHint(QPainter::Antialiasing, true);p.setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));p.setBrush(QBrush(Qt::green, Qt::SolidPattern));p.drawRoundRect(rect().adjusted(1,1,-1,-1), 8, 8);}else if (text() == "圆角矩形2")//圆角矩形{p.setRenderHint(QPainter::Antialiasing, true);p.setPen(QPen(Qt::NoPen/*, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin*/));p.setBrush(QBrush(Qt::green, Qt::SolidPattern));QRect r = rect().adjusted(1, 1, -1, -1);int radius = qMin(r.width(), r.height()) / 2;int diam = 2 * radius;int x1, y1, x2, y2;r.getCoords(&x1, &y1, &x2, &y2);QPainterPath path;path.moveTo(x2, y1 + radius);path.arcTo(QRect(x2 - diam, y1, diam, diam), 0.0, +90.0);path.lineTo(x1 + radius, y1);path.arcTo(QRect(x1, y1, diam, diam), 90.0, +90.0);path.lineTo(x1, y2 - radius);path.arcTo(QRect(x1, y2 - diam, diam, diam), 180.0, +90.0);path.lineTo(x1 + radius, y2);path.arcTo(QRect(x2 - diam, y2 - diam, diam, diam), 270.0, +90.0);path.closeSubpath();p.drawPath(path);}else if (text() == "圆角矩形3")//圆角矩形{p.setRenderHint(QPainter::Antialiasing, true);p.setPen(QPen(Qt::black, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));p.setBrush(QBrush(Qt::green, Qt::SolidPattern));QRect r = rect().adjusted(1, 1, -1, -1);int radius = qMin(r.width(), r.height()) / 2;int diam =  radius/2;int x1, y1, x2, y2;r.getCoords(&x1, &y1, &x2, &y2);QPainterPath path;path.moveTo(x2, y1 + radius);path.arcTo(QRect(x2 - diam, y1, diam, diam), 0.0, +90.0);path.lineTo(x1 + radius, y1);path.arcTo(QRect(x1, y1, diam, diam), 90.0, +90.0);path.lineTo(x1, y2 - radius);path.arcTo(QRect(x1, y2 - diam, diam, diam), 180.0, +90.0);path.lineTo(x1 + radius, y2);path.arcTo(QRect(x2 - diam, y2 - diam, diam, diam), 270.0, +90.0);path.closeSubpath();p.drawPath(path);}

在这里插入图片描述

QPainter官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/27651.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

八个热门绘图软件

很多刚刚开始学习或刚工作的设计专业新人&#xff0c;遇到的棘手问题就是找不到趁手的设计软件&#xff0c;也不知道如何加强操作。这篇文章我就来给大家分享八个windows系统可用的八个热门绘图软件供大家挑选。 Pixso——一款国内出品的矢量设计软件 作为本土研发的设计软件…

电子电气架构——测试工具:CANoe快速入门

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人不该过分自省,这样使他变得软弱,理智的做法只有做很小的决定时才有效,至于改变人生的事情,你必须冒险.意义非凡的事情总是碰巧发生,只有不重要的事,才有…

增加Google服务包 索尼Xperia Z1台版ROM刷机攻略

Z1确实不错&#xff0c;很有索尼的味道。特别是拍照界面&#xff0c;点开之后就是熟悉的界面&#xff0c;连点开相机开机的声音&#xff0c;也和索尼相机一模一样。用了一天下来&#xff0c;整体非常不错&#xff0c;在我心中&#xff0c;Z1这样的机器才能真正的称的上是我大索…

我的Python书被台湾的出版社引进版权了,书的名字也更吸引人了

我去年出了一本Python书&#xff0c;基于股票大数据分析的Python入门实战&#xff0c;在这本书里&#xff0c;我是用股票范例讲述Pythorn的爬虫&#xff0c;数据分析和机器学习知识点&#xff0c;如下是京东的连接。 https://item.jd.com/71486761859.html 结果前几天出版社告诉…

香港 三星 android6.0,【极光ROM】-【三星NOTE20高通全系列(国行/港版/台版/韩版/美版) N98XX】-【V6.0 Android-R-UC1】...

● 支持机型&#xff1a; ● NOTE20系列国行/港版/台版(N9810/N9860) ● NOTE20系列韩版(N981N/N986N) ● NOTE20系列美版(N981U/N986U) ● 写在前面&#xff1a; 1、刷机以后可能出现的问题&#xff1a;安全性降低、失去保修、KNOX物理熔断、无法使用三星PAY、无法支持支付宝指…

如何将以前wm手机所备份的bkg文件导入android手机,【极光ROM】-【三星S20(国行/港版/台版/韩版/美版) G981X-高通865】-【V5.0 Android-Q-TI8】...

● 支持机型&#xff1a; ● G9810(国行S20/港版S20/台版S20) ● G981N(韩版S20) ● G981U(美版S20) ● 注意事项&#xff1a; 1、ROM为卡刷包&#xff0c;请先刷入TWRP后再进行刷机&#xff0c;TWRP在刷机工具中获取。 2、刷本ROM前请先使用ODIN刷入官方2.5的底包4件套(TH*系列…

三星谷歌Android7,台版三星S7系列已推送Android7.0 国行版不远了

【TechWeb报道】2月17日消息&#xff0c;有的用户在购买新机是可能关注的是外观颜值&#xff0c;而有的用户不仅在颜值上更是在配置性能上或许更为关注。目前&#xff0c;不少手机厂商的手机已经预装了Android7.0。而在最近&#xff0c;有消息爆料&#xff0c;台版的三星Galaxy…

三星s9 android 版本,三星S9+官方台版安卓9固件rom升级更新包:BRI-G965FXXU7CSJ1

三星Galaxy S9手机的台版机型是SM-G965F&#xff0c;最近这个机型发布更新了相关的rom系统包&#xff0c;也是这个线刷格式的&#xff0c;具体的版本号是BRI-G965FXXU7CSJ1&#xff0c;也是支持odin工具进行线刷的&#xff0c;这个线刷包也是非常的实用&#xff0c;如果你也需要…

三星手機android6.01,台版三星Galaxy Note 5 升级Android 6.0有哪些变化

今年3月多&#xff0c;三星陆续释出了部份机种的Android 6.0的更新版本&#xff0c;像是三月下旬台版的Galaxy S6与S6 edge就升级了Android 6.0版本&#xff0c;现在台版的Galaxy Note 5 终于正式开放用户吃「棉花糖」了!不知道手上是拿Galaxy Note 5的你&#xff0c;升级了没?…

C语言-实现2048控制台版和图形界面版

2017.1 远古demo 控制台版 EasyX图形界面版 代码段 https://github.com/PorYoung/PublicRepository/blob/master/2048_console.cpp /************************************************************************************************************************ 文件名称&a…

DNF台版云服务器搭建(非商用,可联机)

DNF台版云服务器搭建 该教程结合网上大佬的教程和自己搭建过程中遇到的问题所写 文章中出现的文件都将通过百度网盘分享&#xff0c;各个版本的pvf及其配套客户端需要自己寻找哦 百度网盘链接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/14Az9oRvtQwWWoGv7SI0KIQ?pw…

java——双色球控制台版

双色球控制台版 技术需要 双重数组for、while循环if switch 分支判断break continue 循环控制 时间不够再打一边电子档&#xff0c; 如果大家有问题可以私聊或者留言问我&#xff0c; 电子版有点乱&#xff0c;(。・&#xff3f;・。)&#xff89;I’m sorry~ 整体代码在…

postgresql windows下修改帐号密码 (图文)

重新设置postgres用户的密码方法&#xff1a; 1、关闭数据库服务 2、进入数据库的工作空间目录 (如果是建库是没有另外指定&#xff0c;应该就是postgresql安装目录下的 data 目录) 3、编辑修改文件 pg_hba.conf&#xff0c; 把连接权限设置的 md5 加密方式 改成 trust&#xf…

PostgreSQL登录及修改密码

PostgreSQL登录 1、可通过客户端pgAdmin III直接登录 通过pgAdmin III登录PG库 2、可通过命令行 命令&#xff1a;psql -h 10.10.10.10 -U user -d postgres -p 5570 1 -h&#xff1a;数据库IP -U&#xff1a;登录用户 -d&#xff1a;登录的数据库 -p&#xff1a;登录…

现在的Android开发已经到了必须要转行的时候吗?

前言 最近&#xff0c;有位好友问我这么一个问题&#xff1a; “我做 Android 开发两年多时间了&#xff0c;但是最近总是很焦虑&#xff0c;看着人工智能越来越火&#xff0c;很担心 Android 要不行了&#xff0c;想问下&#xff0c;我现在要转行么&#xff1f;Android 还可以…

【论文写作】英文写作工具推荐及使用教程:DeepL(翻译) + EasyEssay(扩写) + QuillBot(改写润色)

文章目录 一、DeepL二、EasyEssay2.1 润写2.2 扩写2.3 生成文章2.4 英文查重 三、QuillBot 一、DeepL DeepL官网 DeepL的主要作用是翻译&#xff0c;一开始我也是在B站上看到有人推荐用这款翻译工具的&#xff0c;抱着试一试的心态去用了一下&#xff0c;感觉翻译效果真的很不错…

句子的改写和扩写

目录 1.句子改写 2.句子扩写 &#xff08;不低于15个句子算是长句子&#xff0c;不能太多长句子&#xff09; 1.句子改写 我绝不会嫁给你的。 如果你是世界上最后一个男人&#xff0c;我就去寺庙。 If you married me,I would jump into the well. 如果你嫁给我&#xff0c;我…

new bing移动端已上线、notion.ai也不用排队了

您好&#xff0c;这是Bing。 感谢您对新Bing的关注。 新Bing是一种新型的搜索引擎&#xff0c;它不仅提供相关的链接&#xff0c;还能整合网络上可靠的来源&#xff0c;给您一个简明的答案。 您可以用自然语言进行搜索&#xff0c;Bing会根据您的复杂问题分享详细的回答。 ​ ​…

解决newbing提示“今日你已达到今天的对话限制, 登录以继续你的聊天”和bing没有聊天对话框的问题

这几天想用newbing帮我收集一些数据集&#xff0c;但是我科学上网之后进入www.bing.com仍然没有弹出聊天选项。上网找了一些方法&#xff0c;让我清除cookie和更改微软账号地区设置。“聊天”框可以弹出了&#xff0c;但是一聊天就提示“今日你已达到今天的对话限制&#xff0c…