当前位置:网站首页>Shutter: add gradient stroke to font
Shutter: add gradient stroke to font
2022-07-03 12:06:00 【J_ D_ Chi】
List of articles
Write it at the front
Achieve the effect shown in the figure below , This number has gradients inside and outside .
Content
Realize stroke
Search the Internet for a round , You can see by using Stack, Let's make two Text superposition , And to the previous Text Set external stroke , You can get the following results .
Stack(
alignment: Alignment.center,
children: [
Text(
'100',
style: TextStyle(
fontSize: 40,
fontWeight: FontWeight.bold,
foreground: Paint()
..style = PaintingStyle.stroke
..strokeWidth = 6
..color = Colors.black),
),
Text(
'100',
style: TextStyle(
color: Colors.white,
fontSize: 40,
fontWeight: FontWeight.bold),
),
],
)
Achieve gradient
Color gradient use ShaderMask To process , It can help us calculate the rectangle of the text , Then we set it directly to LinearGradient that will do .
In the use of ShaderMask When , The color of the font needs to be white . Due to stroke Text We use foreground To add stroke , Therefore, the color setting should also be handled here , Not like another Text equally , stay TextStyle Inside color Property settings , Otherwise, an error will be reported .
Stack(
alignment: Alignment.center,
children: [
ShaderMask(
shaderCallback: (Rect bounds) {
return LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Color(0xFF8F1FFF), Color(0xFFFF00FF)],
).createShader(Offset.zero & bounds.size);
},
child: Text(
'100',
style: TextStyle(
fontSize: 40,
fontWeight: FontWeight.bold,
foreground: Paint()
..style = PaintingStyle.stroke
..strokeWidth = 6
..color = Colors.white),
),
),
ShaderMask(
shaderCallback: (Rect bounds) {
return LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Colors.white, Color(0xFFFFBDE9)],
).createShader(Offset.zero & bounds.size);
},
child: Text(
'100',
style: TextStyle(
color: Colors.white,
fontSize: 40,
fontWeight: FontWeight.bold),
),
)
],
)

Some adjustments
The above has basically achieved our initial effect , But there is still a problem , That is, there is some whiteness on the edge of the text , This is because of the tracing strokeWidth Some big , It exceeds the rectangular range of the text , Our gradient rendering range is only within the rectangle .
It can be seen here that some parts have crossed the left and right borders :
If you use English characters , It will be more obvious :
For these situations , I am currently dealing with two kinds :
- For the case of left and right boundaries , Add white space characters before and after the text :

- For the case of upper and lower boundaries , adjustment
TextStyleinheightattribute :
ShaderMask(
shaderCallback: (Rect bounds) {
return LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Color(0xFF8F1FFF), Color(0xFFFF00FF)],
).createShader(Offset.zero & bounds.size);
},
child: Text(
'you',
style: TextStyle(
fontSize: 40,
height: 1.4,
fontWeight: FontWeight.bold,
foreground: Paint()
..style = PaintingStyle.stroke
..strokeWidth = 6
..color = Colors.white),
),
)
Reference resources
How to decorate text stroke in Flutter?
How to create gradient text in Flutter
边栏推荐
- SLF4J 日志门面
- 在CoreOS下部署WordPress实例教程
- Oracle advanced (I) realize DMP by expdp impdp command
- Groovy测试类 和 Junit测试
- Introduction to the implementation principle of rxjs observable filter operator
- Test classification in openstack
- DEJA_VU3D - Cesium功能集 之 054-模拟火箭发射全过程
- 《剑指offer 03》数组中重复的数字
- C language improvement article (wchar_t) character type
- [learning notes] DP status and transfer
猜你喜欢
随机推荐
Interview experience in summer camp of Central South University in 2022
Qt OpenGL 纹理贴图
(构造笔记)ADT与OOP
vulnhub之momentum
小鹏 P7 撞护栏安全气囊未弹出,官方回应称撞击力度未达到弹出要求
Introduction to the implementation principle of rxjs observable filter operator
Cacti监控Redis实现过程
Extrapolated scatter data
[learning notes] DP status and transfer
XML (DTD, XML parsing, XML modeling)
(construction notes) learn the specific technology of how to design reusable software entities from three levels: class, API and framework
Is BigDecimal safe to calculate the amount? Look at these five pits~~
Cacti monitors redis implementation process
Notes on 32-96 questions of sword finger offer
Groovy test class and JUnit test
Deploying WordPress instance tutorial under coreos
网络通讯之Socket-Tcp(一)
Basic knowledge of OpenGL (sort it out according to your own understanding)
023(【模板】最小生成树)(最小生成树)
错排问题 (抽奖,发邮件)









