You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中BitmapShader使用时双色位图颜色分离问题

问题原因分析

出现颜色分离而非预期的双色环绕边框,核心是BitmapShader的采样逻辑和STROKE样式Paint的渲染机制不匹配,具体原因如下:

  • Shader的映射范围不是Stroke宽度:BitmapShader默认基于你绘制图形的整个边界矩形采样位图,而非仅针对Stroke的21px宽度。比如绘制圆形时,Shader会把双色位图拉伸覆盖整个圆的外接正方形区域,Stroke只是从这个大区域里“切”出边缘的21px部分,自然导致颜色被拉伸分离,无法形成沿边框的双色分布。

  • STROKE样式的Shader渲染逻辑:当Paint设置为Paint.Style.STROKE时,Shader并不会沿着Stroke的轮廓方向采样位图,而是仍以整个图形的填充区域作为坐标空间。如果你的双色位图是横向/纵向分色的,会被强制拉伸适配整个图形区域,Stroke部分截取的区域就会出现颜色断裂分离。

  • CLAMP模式的放大拉伸:你使用了Shader.TileMode.CLAMP,如果双色位图尺寸远小于绘制图形的边界,位图边缘像素会被无限拉伸填充,进一步加剧颜色分离的视觉效果。


内容的提问来源于stack exchange,提问作者i_o

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 18:45:28