当前位置:网站首页>07_ Handout on the essence and practical skills of text measurement and geometric transformation
07_ Handout on the essence and practical skills of text measurement and geometric transformation
2022-07-07 07:23:00 【Programmer base camp】
07_ The essence and practical skills of character measurement and geometric transformation The notes
- HenCoder Plus The first 7 course The notes draw ( Two )
- Text measurement 量
- Text measurement 量 One of the difficulties : Centered longitudinal measurement 量
- Text measurement 量 Difficulty 2 : Align left
- Text measurement 量 The third difficulty : in 行
- Canvas Range cutting
- Canvas The geometric transformation of
- Matrix The geometric transformation of
- Use Camera Do three-dimensional rotation
- setLocation()
HenCoder Plus The first 7 course The notes draw ( Two )
Text measurement 量
Draw text :drawText()
Text measurement 量 One of the difficulties : Centered longitudinal measurement 量
- Mode one :Paint.getTextBounds() after , Use (bounds.top + bounds.bottom) / 2
- Mode two :Paint.getFontMetrics() after , Use (fontMetrics.ascend + fontMetrics.descend) / 2
Text measurement 量 Difficulty 2 : Align left
use getTextBounds() After that left To calculate
Text measurement 量 The third difficulty : in 行
use breakText() To calculate
Canvas Range cutting
- clipRect()
- clipPath() clipPath() Why does the cut circle have no anti aliasing effect ? because 「 Forced edge cutting 」
- clipOutRect() / clipOutPath()
Canvas The geometric transformation of
- translate(x, y)
- rotate(degree)
- scale(x, y)
- skew(x, y)
a key :Canvas The geometric transformation method of refers to View The coordinate system of , And the drawing method (drawXxx()) The reference is Canvas Own coordinate system .
About multiple transformations :
Canvas When the transformation method of is called many times , because Canvas The coordinate system of will be transformed as a whole , So when translating 、 rotate 、 Shrinkage 、 When there are multiple transformations such as staggering ,Canvas The transformation parameters of will be very difficult to calculate , Therefore, we can use the way of understanding in reverse order :
take Canvas The transformation of is understood as Canvas The coordinate system of 不 change , Each transformation is only for the internal drawing content 行 Transformation , At the same time Canvas The transformation order of is regarded as reverse ( That is, the transformation written below is executed first ), It can be more convenient 便 Into the 行 Parameter calculation of multiple transformations .
Matrix The geometric transformation of
- preTranslate(x, y) / postTranslate(x, y)
- preRotate(degree) / postRotate(degree)
- preScale(x, y) / postScale(x, y)
- preSkew(x, y) / postSkew(x, y)
among preXxx() Effect and Canvas The method of quasi homonymy is the same , postXxx() Effect and Canvas The order of quasi homonymous methods is opposite .
Be careful
If used repeatedly Matrix, Before use, you need to use Matrix.reset() Come and take Matrix Reset .
Use Camera Do three-dimensional rotation
- rotate() / rotateX() / rotateY() / rotateZ()
- translate()
- setLocation()
among , Generally only rotateX() and rorateY() To do along x Axis or y The rotation of the shaft , And the use of setLocation() To adjust the visual amplitude of zoom .
Yes Camera After the change , Use Camera.applyToCanvas(Canvas) To apply to Canvas.
setLocation()
Generally, the first two parameters of this method are filled 0, The third parameter is negative . Because the unit of this value is hard coded , Therefore, the higher the pixel density of mobile phones , amount to Camera distance View Closer , So it's best to write this value as machine 器 Of density A negative value in direct proportion , for example -6 * density.
边栏推荐
- Advantages of using net core / why
- FullGC问题分析及解决办法总结
- 弹性布局(二)
- mips uclibc 交叉编译ffmpeg,支持 G711A 编解码
- How Oracle backs up indexes
- JS small exercise ---- time sharing reminder and greeting, form password display hidden effect, text box focus event, closing advertisement
- Communication between non parent and child components
- PostgreSQL source code (60) transaction system summary
- Cloud backup project
- Fullgc problem analysis and solution summary
猜你喜欢
Kuboard can't send email and nail alarm problem is solved
记一个并发规则验证实现
Flexible layout (II)
At the age of 20, I got the ByteDance offer on four sides, and I still can't believe it
Communication between non parent and child components
The currently released SKU (sales specification) information contains words that are suspected to have nothing to do with baby
Composition API premise
虚拟机的作用
Academic report series (VI) - autonomous driving on the journey to full autonomy
2018 Jiangsu Vocational College skills competition vocational group "information security management and evaluation" competition assignment
随机推荐
身边35岁程序员如何建立起技术护城河?
$refs:组件中获取元素对象或者子组件实例:
机器人技术创新与实践旧版本大纲
抽丝剥茧C语言(高阶)指针进阶练习
点亮显示屏的几个重要步骤
Multidisciplinary integration
Non empty verification of collection in SQL
Test of transform parameters of impdp
Basic process of network transmission using tcp/ip four layer model
【云原生】内存数据库如何发挥内存优势
At the age of 20, I got the ByteDance offer on four sides, and I still can't believe it
Implementing data dictionary with JSP custom tag
Lvs+kept (DR mode) learning notes
Procedure in PostgreSQL supports transaction syntax (instance & Analysis)
Outlier detection technology of time series data
Model application of time series analysis - stock price prediction
"Xiaodeng in operation and maintenance" meets the compliance requirements of gdpr
Academic report series (VI) - autonomous driving on the journey to full autonomy
C language (high-level) data storage + Practice
子组件传递给父组件