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

为什么在调用drawBackground时会覆盖setBackgroundBrush颜色?

在调用drawBackground时会覆盖setBackgroundBrush颜色的原因是因为drawBackground函数是用于绘制背景的,它会在绘制背景之前将背景色设置为默认值。当我们调用setBackgroundBrush来设置背景色时,实际上是修改了背景色的属性值,并没有立即生效。而在调用drawBackground时,它会根据默认的背景色来绘制背景,从而覆盖了我们通过setBackgroundBrush设置的背景色。

为了解决这个问题,我们可以在调用drawBackground之前先保存当前的背景色,然后在绘制完背景后再恢复背景色。具体的实现方式可以通过以下步骤进行:

  1. 在调用setBackgroundBrush设置背景色之前,先创建一个变量来保存当前的背景色。
  2. 调用setBackgroundBrush来设置新的背景色。
  3. 在调用drawBackground之前,将保存的背景色恢复为当前的背景色。
  4. 调用drawBackground来绘制背景。
  5. 绘制完背景后,可以选择是否将背景色恢复为之前保存的值。

通过以上步骤,我们可以保证在调用drawBackground时不会覆盖setBackgroundBrush设置的背景色。

在腾讯云的相关产品中,可以使用腾讯云的云服务器(CVM)来进行云计算相关的开发和部署。腾讯云的云服务器提供了丰富的计算资源和灵活的配置选项,可以满足各种规模和需求的应用场景。您可以通过以下链接了解更多关于腾讯云云服务器的信息:

腾讯云云服务器产品介绍:https://cloud.tencent.com/product/cvm

请注意,以上答案仅供参考,具体的实现方式和推荐产品可能会根据具体的需求和情况而有所不同。

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

相关·内容

微信小程序分享图片的简易canvas工具类

375, pixelRatio: 2 }, toPx: function (rpx) { //这里的 2 可以改成 动态的 pixelRatio //设成固定的是为了在不同设备生成的图片可以在同一级分辨率...height 背景高 * @param x 轴 坐标 * @param y 轴 坐标 * */ function drawBackground(ctx, color = 'white',...(ctx); 要修改颜色可以 canvasUtil.drawBackground(ctx, '#999999'); 2、绘制文字 这个是为了方便设置字体,字号,同时返回了最终的x轴坐标,是为了适应某些需要拼接文字的需求...if (fill) { ctx.fill() } else { ctx.stroke() } ctx.closePath() } (2)最后调用绘制圆角和绘制图片的方法...drawImageAspectFill(ctx, imagePath, sWidth, sHeight, dx, dy, dWidth, dHeight); ctx.restore(); } 这里需要注意的就是这三个方法的调用时机啦

1.4K20
  • 自定义View学习之路(三)————验证码的实现

    而画板的出现位置和大小就来源于onMesure的绘制) 定义参数: mContent:验证信息的内容(可在xml中设置,默认值为“”) mContentColor:验证信息的字体颜色(可在xml中设置...,默认值为黑色) mContentSize:验证信息的字体大小(可在xml中设置,默认值为10) mBackGround:验证码的背景颜色(可在xml中设置,默认值为绿色) mBound:声明Reac...mBorderColor:边框颜色(默认值为黑色) mBorderSize:边框大小(默认值为1) mRandom:声明Random mInterfrenceCount:声明干扰项的个数(默认值为...给一个默认的mContent 给View加入点击事件 内部私有函数: drawBackground(Canvas canvas);绘制背景 drawBroder(Canvas canvas);绘制边框...onDraw(Canvas canvas):   在onDraw中绘制我们的所有内容,调用编写好的所有绘制方法即可。而调用postInvalidate();会导致调用onDraw方法达到更新的作用。

    52110

    C++ Qt开发:Charts绘图组件概述

    title) 设置图表的标题 setTitleFont(const QFont &font) 设置图表标题的字体 setTitleBrush(const QBrush &brush) 设置图表标题的画刷(颜色和填充...在实际使用中,可以根据需要查阅官方文档获取更详细的信息。...接着我们来创建一个最基本的折线图,首先需要使用图形界面中的Graphics View组件做好UI布局,但由于该组件并不是用于绘制图形的,所以如果需要绘制图形则要在组件上右键,选中提升为按钮将其提升为绘图组件,如下图; 此时会弹出如下所示的提示框...setBackgroundBrush(const QBrush &brush) 设置视图的背景刷。 viewport() const 获取视口窗口部件,即视图的直接子部件。...QBarSeries类的定义对特有元素进行填充即可,当数据集被填充后既可以直接调用绘图方法将数据刷新到组件上。

    1.4K10

    Android 如何实现气泡选择动画

    此外,本文后面我会解释我为什么选择 Kotlin 语言开发,以及这样做的好处。需要了解 Java 和 Kotlin 更多不同之处可以阅读我之前的文章。 如何创建着色器?...如果项目使用的是 Java,那么最方便的方式是在另一个文件编写你的着色器,然后使用输入流读取。如上述示例代码所示,Kotlin 可以简单地在类中创建着色器。...你可以在 """ 中间添加任意的 GLSL 代码。...在动画中圆有两种状态 —— 普通和选中。在普通状态下圆的 texture包含文字和颜色,在选中状态下同时包含图像。因此我需要为每个圆创建两个不同的 texture。...每次画面绘制,都需要调用 World 的 step() 方法移动所有的实体。之后你可以在图形的新位置进行绘制。 我遇到的问题是 World 的重力只能是一个方向,而不能是一个点。

    2.7K20

    一起用 HTML5 Canvas 做一个简单又骚气的粒子引擎

    总得来说就是:发射器存在于世界之中,发射器制造粒子,世界和发射器都会影响粒子的状态,每个粒子在经过世界和发射器的影响之后,计算出下一刻的位置,把自己画出来。...创造一个世界 不知道为什么我理所当然得会想到世界应该有 重力加速度。但是光有重力加速度不能表现出很多花样,于是这里我给他增加了另外两种影响因素:热气和风。...循环触发函数 * 在满足条件的时候触发 * 比如RequestAnimationFrame回调,或者setTimeout回调之后循环触发的 * 用于维持World的生命 */ World.prototype.timeTick...this.updateStatus(); this.context.clearRect(0,0,this.canvas.width,this.canvas.height); this.drawBackground...this.alpha = this.initAlpha * (1 - (this.world.time - this.birthTime) / this.life); //TODO 计算颜色

    96270

    QT实现机器视觉最常用的图像查看器(源码)

    在机器视觉行业中最常见的控件就是图像查看器了,使用QT实现其实也非常简单,在我出的项目【降龙:算法软件框架】和【重明:工业相机二次开发】中都有用到。...完整代码工程在公众号【周旋机器视觉】后台发送【十二生肖控件】获取。...2、QT视图模型介绍 在我们常规认知里,例如显示一张图像,那只需要一个QWidget(也可以说是画布),然后我们将图像显示在QWidget上(也可以说画在画布上),就完成了,只需要两个对象,一个图像,一个...3、如何使用QGraphics 理解了思想,QT有现成的视图类,我们直接调用即可。...pCenterWidget->setLayout(pMainLayout); this->setCentralWidget(pCenterWidget); 运行效果如下: 效果并不是我们预想的那样,有几个问题: 背景颜色不是我们想要的黑白格或者是任何其它样式

    61110

    一起用HTML5 canvas做一个简单又骚气的粒子引擎

    总得来说就是:发射器存在于世界之中,发射器制造粒子,世界和发射器都会影响粒子的状态,每个粒子在经过世界和发射器的影响之后,计算出下一刻的位置,把自己画出来。...三.创造一个世界 不知道为什么我理所当然得会想到世界应该有重力加速度。但是光有重力加速度不能表现出很多花样,于是这里我给他增加了另外两种影响因素:热气和风。...* 在满足条件的时候触发 * 比如RequestAnimationFrame回调,或者setTimeout回调之后循环触发的 * 用于维持World的生命 */ World.prototype.timeTick...this.updateStatus(); this.context.clearRect(0,0,this.canvas.width,this.canvas.height); this.drawBackground...this.alpha = this.initAlpha * (1 - (this.world.time - this.birthTime) / this.life); //TODO 计算颜色

    4.6K20

    自定义View:Padding与绘制内容

    自定义绘制步骤 1.创建一个继承自View的类 2.重写onDraw方法,在该方法内,使用Canvas进行内容绘制。...注意:这里我们不需要调用父类(View)的onDraw方法,因为View.onDraw方法为空实现。...height 这一步用来获取缩放的初始值 float offset = height - value;由于折线图需要y轴低的点位于底部,所以需要做转换 除此之外,我们还要考虑到paddingTop的值,这就是为什么要使用...第三个参数为阴影的颜色 同时我还增加了水平线作为背景这样看起来更符合折线图的效果,实现代码很简单,如下 1 2 3 4 5 6 7 8 9 10 11 private void drawBackground...使用Paint,我们可以更改填充方式,颜色,画笔宽度等很多效果。建议了解以下这两个类的API,然后自己写点小例子熟悉一下。

    1.7K20

    Qt官方示例-拖放机器人

    颜色与变量一起存储为成员变量,dragOver稍后将使用该变量在视觉上指示肢体可以接受拖动到的颜色。...在构造函数主体中,我们通过调用setAcceptDrops(true)来支持接受放置事件。...因此,如果传入的拖动对象包含一种颜色,则表示事件被接受,我们将其设置dragOver为true并调用update(),以帮助向用户提供积极的视觉反馈;否则,事件将被忽略,从而使事件传播到父元素。...(当鼠标在拖动项目时释放鼠标按钮时)。 我们将其重置dragOver为false,分配机器人部件的新颜色,然后调用update()。   ...Qt将确保在正确的时间删除该对象。我们还创建了一个QMimeData实例,该实例可以包含我们的颜色或图像数据,并将其分配给拖动对象。

    4.8K41

    关于Android图片资源瘦身的奇思妙想

    png这部分资源一般在apk中占用了比较大的体积,很多时候可以通过tinypng有损压缩减少颜色表来减少体积,但容易被像素眼的设计师挑战;另一种方案是无损压缩,常规方法包括转换为索引图片、改变编码方式、...分钟,不过这个过程只需要在本地做一遍,所以可以忍受,但处理完的结果不理想,因为没什么效果,减小量为十几KB~~ 仔细分析得知这里面犯浑作怪的竟然是aapt,由于先调pngout再调aapt会导致压缩效果覆盖...,因为这样屏蔽掉会出现奇葩的景象,得到的手Q画面效果如下: 为什么呢?...仔细分析发现九宫格图片被压出问题了,aapt在处理png图片时会判断是不是九宫格图片,如果是则做特殊预处理: do_9patch其实主要的是九宫格信息弄出来,写入到info9Patch字段,并最终写入...进行预处理得到npTc字段,再用pngout在压缩时调用"knptc"参数保护一下npTc块,这样便得到了正确的九宫格图片,安装包的效果图也就正常了。

    4.7K40

    设计模式学习之模版方法模式

    通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同的执行结果...同时,在抽象类中实现了一个模板方法(Template Method),用于定义一个算法的框架,模板方法不仅可以调用在抽象类中实现的基本方法,也可以调用在抽象类的子类中实现的基本方法,还可以调用其他对象中的方法...(2) ConcreteClass(具体子类):它是抽象类的子类,用于实现在父类中声明的抽象基本操作以完成子类特定算法的步骤,也可以覆盖在父类中已经实现的具体基本操作。...对于模板方法模式,父类提供的构建步骤和顺序或者算法骨架,通常是不希望甚至是不允许子类去覆盖的,所以在某些场景中,可以直接将父类中提供骨架的方法声明为final类型。...模板方法只在特定点调用操作,这样就只允许在这些点进行扩展。

    24110

    二维码服务拓展(支持logo,圆角logo,背景图,颜色配置)

    二维码的基础服务拓展 zxing 提供了二维码一些列的功能,在日常生活中,可以发现很多二维码并不仅仅是简单的黑白矩形块,有的添加了文字,加了logo,定制颜色,背景等,本片博文则着手于此,进行基础服务的拓展...本片博文拓展的功能点: 支持在二维码中间添加logo logo样式选择:支持圆角/直角logo,支持logo的边框选择 二维码颜色选择(可自由将原来的黑白色进行替换) 支持背景图片 支持探测图形的前置色选择...二维码颜色可配置 二维码颜色的选择,主要在将二维码矩阵转换成图的时候,选择不同的颜色进行渲染即可,我们主要的代码将放在 com.hust.hui.quickmedia.common.util.QrCodeUtil...,在二维码的最终渲染时,对位置探测图形采用不同的颜色进行渲染即可,所以渲染代码如下 /** * 根据二维码配置 & 二维码矩阵生成二维码图片 * * @param qrCodeConfig *...其中,我们对二维码的覆盖设置了透明度为0.8,确保不会完全覆盖背景图,导致完全看不到背景是什么,此处如有其他的需求场景可以进行可配置化处理 4. logo支持 其实logo的支持和背景的支持逻辑基本没什么差别

    2.6K100

    【Android 性能优化】布局渲染优化 ( 过渡绘制 | 自定义控件过渡绘制 | 布局文件层次深 | GPU 过渡绘制调试工具 | 背景过度绘制 )

    过渡绘制调试中不同颜色的含义 3....过渡绘制调试中不同颜色的含义 组件上各个颜色代表的含义 : 打开过渡绘制调试工具后 , 组件上有不同的颜色 ; ① 蓝色 : GPU 过度绘制了 1 次 , 没有过渡绘制 ; ② 浅绿色 : GPU...背景设置 : ① 设置背景 : 设置了背景 , 图片或颜色值 , 绘制增加 1 次 ; ② 透明背景 : 背景透明 , 不增加绘制次数 , 绘制增加 0 次 ; ③ 主题背景 : 在主题中设置了背景..., 也会增加 1 次绘制 ; 如果同时设置布局的背景和主题背景 , 此时会绘制 2 次 ; 删除一次背景设置 , 这里建议删除主题的背景 ; 2 ....删除主题背景 : ① 使用代码删除 : 调用 getWindow().setBackgroundDrawable( null ) 方法 , 删除背景 , 该方法调用调用必须 在 super.onCreate

    2.3K20

    HenCoder Android 自定义 View 1-5: 绘制顺序

    造成这种情况的原因是 Android 的绘制顺序:在绘制过程中,每一个 ViewGroup 会先调用自己的 onDraw() 来绘制完自己的主体之后再去绘制它的子 View。...也就是说,在绘制过程中,每个 View 和 ViewGroup 都会先调用 onDraw() 方法来绘制主体,再调用 dispatchDraw() 方法来绘制子 View。...能想明白为什么吧?图就不上了。 3 绘制过程简述 绘制过程中最典型的两个部分是上面讲到的主体和子 View,但它们并不是绘制过程的全部。除此之外,绘制过程还包含一些其他内容的绘制。...左上角的标签并没有被黑色遮罩盖住,而是保持了原有的颜色。...另外别忘了上面提到的那两个注意事项: 在 ViewGroup 的子类中重写除 dispatchDraw() 以外的绘制方法时,可能需要调用 setWillNotDraw(false); 在重写的方法有多个选择时

    81630

    JetPack Compose主题配色太少怎么办,来设计自己的颜色系统吧

    传统做法 在传统的 View 体系中,我们一般都会将颜色定义在 color.xml 文件中,在使用的时候直接读取即可,getColor(R.xx) ,这个大家都已经很熟悉了,那么在 Compose 中呢...= Color(0xFF0D47A1) ​ /** * 实际主题的颜色集,所有颜色都需要添加到其中,并使用相应的子类覆盖颜色。...所以在Compose中自定义主题颜色,其实就是我们在 Colors 的基础上自己又写了一套自己的配色。 既然这样,那为什么我们不直接继承Colors去增加配色呢?...更重要的原因是这样 不符合Md的设计 ,所以这也就是为什么 需要我们去自定义自己的颜色系统,甚至于可以完全自定义自己的主题系统。...如果是方法1,可能此时会进入硬编码阶段,即使用复杂的业务逻辑去完成; 但如果是利用 CompositionLocal 呢?

    1.6K20

    全屏、沉浸式、fitSystemWindow使用及原理分析:全方位控制“沉浸式”的实现

    可以这么理解:状态栏与导航栏拥有自己独立的窗口,而且这两个窗口的优先级较高,会悬浮在所有窗口之上,可以把系统自身的状态栏与导航栏看做全透明的,之所有会有背景颜色,是因为下层显示界面在被覆盖的区域添加了颜色...StatusBar、NavigationBar、XXXXActivity可以看出Activity是在状态栏与导航栏下面的,被覆盖了,它们共同参与显示界面的合成,但是,StatusBar、NavigationBar...状态栏颜色更新原理 假设当前的场景是默认样式的Activity,如果想要更新状态栏颜色只需要如下代码: getWindow().setStatusBarColor(RED); 其实这里调用的是PhoneWindow...DecorView内容区域的扩展与fitsystemwindow的意义 fitSystemWindow属性可以让DecorView的内容区域延伸到系统UI下方,防止在扩展时被覆盖,达到全屏、沉浸等不同体验效果...DecorView级别的WindowInsets消费 默认样式Activity的状态栏是有颜色的,如果内容直接扩展到状态栏下方,一定会被覆盖掉,系统默认的实现是在DecorView的根布局上加了个padding

    5.8K40
    领券