当前位置:网站首页>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.
边栏推荐
- About binary cannot express decimals accurately
- 组件的通信
- 云备份项目
- Bus message bus
- Example of Pushlet using handle of Pushlet
- Lvs+kept (DR mode) learning notes
- mips uclibc 交叉编译ffmpeg,支持 G711A 编解码
- 修改Jupyter Notebook文件路径
- 95后CV工程师晒出工资单,狠补了这个,真香...
- Introduction to abnova's in vitro mRNA transcription workflow and capping method
猜你喜欢

Basic process of network transmission using tcp/ip four layer model

About binary cannot express decimals accurately

Implementation of AVL tree

Model application of time series analysis - stock price prediction

弹性布局(二)

Use of completable future

C language (high-level) data storage + Practice

sql中对集合进行非空校验

freeswitch拨打分机号源代码跟踪

Cloud backup project
随机推荐
$refs:组件中获取元素对象或者子组件实例:
选择商品属性弹框从底部弹出动画效果
FPGA course: application scenario of jesd204b (dry goods sharing)
【云原生】内存数据库如何发挥内存优势
Example of Pushlet using handle of Pushlet
抽丝剥茧C语言(高阶)指针进阶练习
Wechat applet full stack development practice Chapter 3 Introduction and use of APIs commonly used in wechat applet development -- 3.9 introduction to network interface (IX) extending the request3 met
Circulating tumor cells - here comes abnova's solution
95后CV工程师晒出工资单,狠补了这个,真香...
How do I get the last part of a string- How to get the last part of a string?
ViewModelProvider. Of obsolete solution
Exception of DB2 getting table information: caused by: com ibm. db2.jcc. am. SqlException: [jcc][t4][1065][12306][4.25.13]
Sqlserver multithreaded query problem
After the promotion, sales volume and flow are both. Is it really easy to relax?
SQLMAP使用教程(四)实战技巧三之绕过防火墙
子组件传递给父组件
Pass parent component to child component: props
Stack Title: nesting depth of valid parentheses
[Luogu p1971] rabbit and egg game (bipartite game)
OOM(内存溢出)造成原因及解决方案