当前位置:网站首页>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
TextStyle
inheight
attribute :
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
边栏推荐
- Cacti monitors redis implementation process
- Shutter: about inheritedwidget
- Php Export word method (One MHT)
- vulnhub之GeminiInc
- (database authorization - redis) summary of unauthorized access vulnerabilities in redis
- 网络通讯之Socket-Tcp(一)
- ES6新特性
- STL Tutorial 9 deep copy and shallow copy of container elements
- typeScript
- vulnhub之narak
猜你喜欢
随机推荐
DEJA_VU3D - Cesium功能集 之 053-地下模式效果
Use of QT OpenGL camera
vulnhub之presidential
Vulnhub pyexp
Qt OpenGL 旋转、平移、缩放
cgroup简介
Dynamically monitor disk i/o with ZABBIX
Capturing and sorting out external Fiddler -- Conversation bar and filter [2]
win10 上PHP artisan storage:link 出现 symlink (): Protocol error的解决办法
Go语言实现静态服务器
Colleagues wrote a responsibility chain model, with countless bugs
(database authorization - redis) summary of unauthorized access vulnerabilities in redis
ES6新特性
Qt+vtk+occt reading iges/step model
(构造笔记)从类、API、框架三个层面学习如何设计可复用软件实体的具体技术
(构造笔记)ADT与OOP
《剑指offer 04》二维数组查找
Dart: About zone
量化计算调研
Kubernetes three dozen probes and probe mode