首页 > 编程知识 正文

linear是什么意思,unity可视化shader

时间:2023-05-05 18:53:01 阅读:110537 作者:815

Android渲染器Shader:LinearGradient(一)

线性梯度是安卓的线性渲染器。 我写5个线性渲染器渲染后的View表示结果。 这里,线性梯度1、2、3只是改变了渲染器的渲染模式,线性梯度1是重复的,线性梯度2是镜像模式镜像的), 请注意,如果“LinearGradient 3”是“拉伸”clamp ) (即“LinearGradient 3”处于拉伸模式),则设置不足以渲染整个屏幕的“LinearGradient”会拉伸最后一种颜色(我写的这个例子是蓝色的Color.BLUE。

线性渐变4和5只是为了演示构建线性渐变的浮点x0、浮点y0、浮点x1和浮点y1在进行复杂设置后可以产生的屏幕渲染效果。

以线性渐变4为例,如果设置x0=0、y0=0、x1=300、y1=300,则会沿此300 X 300正方形的左上角——右下对称轴从左上角渲染。

写完整的代码。

首先写LinearGradientView。 此线性梯度从View继承:

package zhangphil.demo; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import Android.graphics.linear gradient; import android.graphics.Paint; import android.graphics.Rect; import Android.util.attributes et; import android.graphics.Shader; import android.view.View; publicclasslineargradientviewextendsview { privatelineargradientlineargradient1=null; private paint paint1=空; privatelineargradientlineargradient2=null; private paint paint2=空; privatelineargradientlineargradient3=null; private paint paint3=空; privatelineargradientlineargradient4=null; private paint paint4=空; privatelineargradientlineargradient5=null; private paint paint5=空; publiclineargradientview (上下文) ) super )上下文; linear gradient1=newlineargradient (0,0,300,0,new int[] { Color.RED,Color.YELLOW,Color.BLUE } ),null,null,null linear gradient2=newlineargradient (0,0,300,0,new int[] { Color.RED,Color.YELLOW,Color.BLUE } ),null,null,null linear gradient3=newlineargradient (0,0,300,0,new int[] { Color.RED,Color.YELLOW,Color.BLUE } ),null,null,null linear gradient4=newlineargradient (0,0,300,300,new int[] { Color.RED,Color.YELLOW,Color.BLUE },null,null,null,new linear gradient5=newlineargradient (0,300,300,0,new int[] { Color.RED,Color.YELLOW,Color.BLUE },null,null,null,new } publiclineargradientview (context context,AttributeSet attrs ) super (context,attrs ); } @ overrideprotectedvoidondraw (Canvas canvas ) (super.Ondraw ) canvas ); int left=10,top=20,right=0,bottom=0; View最右边的right=this.getWidth ()- left; //渲染中每个矩形的高度为坐标系的结束值ybottom=this.getHeight ()/5; //渲染器1pai nt1.set shader (线性渐变1 ); rectrect1=newrect(left,top,right,bottom ); canvas.Drawrect(rect1,paint1); top=top bottom; //渲染器2 paint2. set shader (线性梯度2; rectrect2=newrect(left,top,right,bottom * 2); canvas.Drawrect(rect2、paint2); top=top bottom; //渲染器3 paint3. set shader (线性梯度3; rectrect3=newrect(left,top,right,bottom * 3); canvas.Drawrect(rect3,paint3); top=top bottom; //渲染器4 paint4. set shader (线性梯度4; rectrect4=newrect(left,top,right,bottom * 4); canvas.Drawrect(rect4,paint4); top=top bottom; //渲染器5pai nt5.set shader (线性渐变5 ); rectrect5=newrect(left,top,right,bottom * 5); canvas.Drawrect(rect5、paint5); }

在一个简单的时间段内,直接加载到Activity中的setContentView :

package zhangphil.demo; import android.app.Activity; import android.os.Bundle; publicclassmainactivityextendsactivity { @ overrideprotectedvoidoncreate (bundlesavedinstancestate ) super.oncreate ) saveded ; setcontentview (线性阵列视图; }

代码执行结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。