java绘制半透明图片_如何在图形对象上绘制半透明文本?

我想在图形对象上绘制一个32位透明的文本 . 当我尝试时,我只在结果中得到黑色 .

如果我尝试绘制具有相同半透明颜色的线条,它可以完美地工作 .

我有这个代码:

lBitmap As New Bitmap(32, 32, PixelFormat.Format32bppArgb)

lGraphic As Graphics = Graphics.FromImage(lBitmap)

lGraphic.SmoothingMode = SmoothingMode.HighQuality

lGraphic.InterpolationMode = InterpolationMode.HighQualityBicubic

lGraphic.Clear(Color.Transparent)

Dim lTestTransparencyColor As Color = Color.FromArgb(100, 140, 0, 230)

lGraphic.DrawLine(New Pen(lTestTransparencyColor), 0, 0, 32, 32)

lBrush As New SolidBrush(lTestTransparencyColor)

lGraphic.DrawString("A", New Font("Arial", 12), lBrush, 0, 0)

Dim lImage As Image = lBitmap

lImage.Save("D:\Test.png", Imaging.ImageFormat.Png)

在正确应用透明度的情况下绘制线条,但文本为黑色且没有透明度 .

Edit:

如果我在Graphics对象上设置纯色作为背景,那么文本透明度可以工作,但是我需要它在结果png文件中真正透明,而不仅仅是对图像中的纯色背景透明 . 如果我将部分透明颜色设置为背景,则会出现此问题,如下所示:

lGraphic.Clear(Color.FromArgb(100, 0, 255, 0))

我当时认为SolidBrush可能不支持透明度,但是当我在调试中查看时,我发现了一个名为Transparent( Brushes.Transparent )的预定义画笔,它是 SolidBrush . 我在绘制文本时尝试使用 Brushes.Transparent 作为画笔,并且它根本没有成功显示 . 这意味着我可以完全透明地工作,但不是部分透明 .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值