当前位置:网站首页>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.
边栏推荐
- readonly 只读
- 面试官:你都了解哪些开发模型?
- Esxi attaching mobile (Mechanical) hard disk detailed tutorial
- 详解机器翻译任务中的BLEU
- 栈题目:有效括号的嵌套深度
- Freeswitch dials extension number source code tracking
- How to model and simulate the target robot [mathematical / control significance]
- mips uclibc 交叉编译ffmpeg,支持 G711A 编解码
- 软件验收测试
- 关于二进制无法精确表示小数
猜你喜欢
抽丝剥茧C语言(高阶)数据的储存+练习
Abnova membrane protein lipoprotein technology and category display
$parent (get parent component) and $root (get root component)
Network foundation - header, encapsulation and unpacking
The currently released SKU (sales specification) information contains words that are suspected to have nothing to do with baby
Four goals for the construction of intelligent safety risk management and control platform for hazardous chemical enterprises in Chemical Industry Park
RuntimeError: CUDA error: CUBLAS_ STATUS_ ALLOC_ Failed when calling `cublascreate (handle) `problem solving
抽丝剥茧C语言(高阶)指针进阶练习
1090: integer power (multi instance test)
About binary cannot express decimals accurately
随机推荐
AVL树的实现
Causes and solutions of oom (memory overflow)
Precise space-time travel flow regulation system - ultra-high precision positioning system based on UWB
Leetcode t1165: log analysis
JS decorator @decorator learning notes
Freeswitch dials extension number source code tracking
Composition API 前提
Circulating tumor cells - here comes abnova's solution
Bindingexception exception (error reporting) processing
Fast quantitative, abbkine protein quantitative kit BCA method is coming!
Test of transform parameters of impdp
sql中对集合进行非空校验
C language (high-level) data storage + Practice
Sqlserver multithreaded query problem
Kuboard无法发送邮件和钉钉告警问题解决
Networkx drawing and common library function coordinate drawing
. Net core accesses uncommon static file types (MIME types)
Use of completable future
js小练习----分时提醒问候、表单密码显示隐藏效果、文本框焦点事件、关闭广告
Several important steps to light up the display