`

Canvas.drawText() 设置了alpha值却没有半透明效果的问题

 
阅读更多
需求:
在屏幕上画text,需要字体为蓝色,并且要有半透明效果
思路:
使用Canvas.drawText() 。

先看下面代码:

protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setAlpha(0x40);
paint.setColor(Color.BLUE);

canvas.drawText("Hello", 0, 0, paint);
}

你认为这代码没错吧?
是的逻辑上的确没错。
可是出来的效果却没有体现出半透明。

为什么捏?
折腾了好半天,最后注意到paint.setColor()方法里的说明:
Set the paint's color. Note that the color is an int containing alpha as well as r,g,b.
英文好的朋友们都看懂了吧,是的setColor中传的参数是包含了alpha值的。
因此我们等于是先设置了alpha值为0x40,然后再设回了不透明。
当然就不会体现alpha值啦。

正确写法,把paint.setAlpha(0x40);和 paint.setColor(Color.BLUE);两行位置调换就ok了!

protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();

paint.setColor(Color.BLUE);
paint.setAlpha(0x40);

canvas.drawText("Hello", 0, 0, paint);
}

呵,很简单的一个问题。居然搞半天。汗。
3
1
分享到:
评论

相关推荐

    Android canvas.save()和canvas.restore()的理解

    7. 最后,可能还会调用`canvas.saveLayer()`和`canvas.restore()`来实现更高级的绘图效果,如半透明叠加层或者离屏渲染。 总的来说,`canvas.save()`和`canvas.restore()`是Android图形编程中不可或缺的部分,它们...

    html2canvas.js 下载

    《html2canvas.js:网页截屏的利器》 在当今的Web开发中,用户界面的交互性和可分享性越来越重要,而html2canvas.js正是实现这些功能的关键工具。这个JavaScript库允许开发者将网页的HTML结构及其CSS样式转换为...

    canvas.text.js

    canvas.text.js

    html2canvas.js

    本文将详细介绍html2canvas.js的工作原理、使用方法以及可能遇到的问题与解决方案。 一、工作原理 html2canvas.js的核心思想是将DOM树转换为Canvas渲染上下文中的图形。它首先遍历整个DOM结构,对每个节点进行渲染...

    html2canvas.js and html2canvas.svg.js and bluebird.min.js

    var imgData = canvas.toDataURL('image/png'); // 可以在这里做其他处理,例如保存图片 }); ``` 在这个例子中,`document.body`是被截图的元素,生成的Canvas会被添加到页面中,`toDataURL`方法则用于将Canvas...

    html2canvas.js 和jsPdf.debug.js下载.rar

    jsPdf.debug.js和html2canvas.js下载jsPdf.debug.js和html2canvas.js下载jsPdf.debug.js和html2canvas.js下载jsPdf.debug.js和html2canvas.js下载

    html2canvas.js文件包下载

    《html2canvas.js:将HTML转化为Canvas图像的神器》 在网页开发中,有时我们需要将网页内容以图像的形式保存或分享,html2canvas.js就是这样一个强大的JavaScript库,它能够实现将HTML元素及其样式转化为Canvas画布...

    Delphi Canvas.Brush为窗体绘制渐变背景.rar

    Delphi 为窗体绘制渐变背景,这里使用了Delphi中的Canvas.Brush.Color来实现窗口背景的渐变色,不错吧?如示例图的左右渐变效果,实现的代码:  for i:=0 to self.Width-1 do  begin  c1:=GetRValue(StartColor) ...

    android利用Paint在Canvas上实现竖排写字

    - 可以通过设置Paint的`paint.setTextAlign(Paint.Align.RIGHT)`使文本右对齐,再配合`canvas.translate()`方法改变画布的坐标原点,使得每次绘制文本时都会向左移动一定的距离,从而达到竖排的效果。 4. **步骤...

    Android Canvas的drawText()与文字居中方案详解

    canvas.drawText(text, centerX, centerY, paint); ``` 在这个例子中,我们先创建了一个背景矩形,然后设置了Paint的样式和大小。通过`measureText()`方法计算出文本的宽度,`getFontMetrics().height`获取高度。...

    html2canvas最新版本git下载的

    包含的有:html2canvas.js html2canvas.mini.js,版本号是v1.0.0-alpha.12,。简洁:著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 链接:http://caibaojian.com/html2canvas.html 来源:...

    android canvas drawText()文字居中效果

    `canvas.drawText()`方法使用了矩形的中心x坐标和计算出的基线y坐标进行绘制。 需要注意的是,`getFontMetrics()`方法应该在设置字体大小或样式之后调用,以确保获取到正确的字体尺寸信息。否则,计算的`top`和`...

    html2canvas.js截高清图案例.zip

    1. 处理CSS3效果:html2canvas.js可能无法完全重现所有CSS3效果,如阴影、渐变等,需要额外处理。 2. 异步加载资源:如果页面中包含异步加载的图片,可能需要在截图前确保它们已加载完毕。 3. 处理透明度:Canvas不...

    半透明图片叠加的功能

    当阿尔法值介于0和255之间时,图片就会呈现出不同程度的半透明效果。 半透明图片的叠加涉及到两个关键概念:混合模式和阿尔法通道。混合模式定义了两个或多个图像层如何相互结合,可以创建出丰富多样的视觉效果。...

    html2canvas.js下载

    html2canvas.js下载

    html2canvas.zip

    2. **CSS支持**:支持大部分CSS属性,包括边框、背景、阴影、透明度等,使得转换后的图像尽可能保持与原页面一致的视觉效果。 3. **图片加载**:自动处理页面中的图片,确保它们在Canvas中正确显示。 4. **异步处理*...

    html2canvas.js实现整个区域甚至整个页面的截取

    html2canvas.js实现整个区域甚至整个页面的截取,再次声明这不是一个小小的头像图片的移动截取(小小的截取就不要下载喽),是整个页面的截取;网页端需要的不多,就是现在不太好找了,所里我整理了一下

    WPF经典教程之Canvas、InkCanvas布局

    值得注意的是,如果同时设置了`Canvas.Left`和`Canvas.Right`,或者`Canvas.Top`和`Canvas.Bottom`,那么`Canvas.Left`和`Canvas.Top`的值优先生效。 然而,Canvas布局并不适用于需要自适应大小或动态调整布局的...

    DelphiXE10.3_FMX画图程序.rar

    WinVista、Win7: D2D (FMX.Canvas.D2D.pas) WinXP: GDI+ (FMX.Canvas.GDIP.pas) Mac 系列: Core Graphics (FMX.Canvas.Mac.pas) 和 HTML5 中的 Canvas 非常类似, 现在的 Canvas 模糊了 Pen 的概念: 之前的 Canvas....

Global site tag (gtag.js) - Google Analytics