精华内容
下载资源
问答
  • ScreenHelper - android 屏幕适配辅助工具
  • 打桌球瞄不准,就做了个画线的工具,可直接在屏幕上画线,开启时要关杀毒软件.先做个透明窗口,然后让鼠标穿
  • 相信很多学习绘画的同学,在绘画中都不知道辅助线该怎么用?那你看看这个!! 这就是辅助线在绘画中的应用!希望可以帮到大家!

    相信很多学习绘画的同学,在绘画中都不知道辅助线该怎么用?那你看看这个!!在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这就是辅助线在绘画中的应用!希望可以帮到大家!

    展开全文
  • unity编辑器中使用Gizmos绘制辅助线

    千次阅读 2018-02-05 19:16:59
    前面给大家分享了一个关卡编辑器,但是我们的策划同学反映在摆道具的时候不够直观,坐标总是对不齐,于是就使用Gizmos给策划同学们写了一个辅助线的脚本,分享出来: using UnityEngine; #if UNITY_EDITOR using ...

    前面给大家分享了一个关卡编辑器,但是我们的策划同学反映在摆道具的时候不够直观,坐标总是对不齐,于是就使用Gizmos给策划同学们写了一个辅助线的脚本,分享出来:

    using UnityEngine;
    #if UNITY_EDITOR
    using UnityEditor;
    #endif
    
    [ExecuteInEditMode]
    public class MapEditor : MonoBehaviour {
    
        public Color sideColor = Color.white;
        public Color insideColor = Color.black;
    
    	public float width = 10.0f;
    	public float height = 1.0f;
    
    	public int mapHeight = 10;
    	public int mapWidth = 100;
    
    	//public float autoDPos = 0.1f;
    
    	// Use this for initialization
    	void Start () {
    	
    	}
    	
    	void OnDrawGizmos()
    	{
            DrawBGLine();
    	}
    
        public void DrawBGLine(){
    #if UNITY_EDITOR
            Gizmos.color = insideColor;
    		
            for (float y = 0; y < mapHeight; y += height)
    		{
    			Gizmos.DrawLine(new Vector3(0, y , -1f),
    			                new Vector3(mapWidth, y , -1f));
    			
                Handles.Label(new Vector3(-1f,y+0.5f , 0f), "" + y);
    		}
    		
    		for (float x = 0; x < mapWidth; x += width)
    		{
                Gizmos.DrawLine(new Vector3(x,0, -1f),
                                new Vector3(x,mapHeight, -1f));
    			
                Handles.Label(new Vector3(x,-0.2f, 0f), "" + x);
            }
    
            Gizmos.color = sideColor;
            
            Gizmos.DrawLine(new Vector3(0, 0 , -1f),new Vector3(mapWidth, 0 , -1f));
            Gizmos.DrawLine(new Vector3(mapWidth, 0 , -1f),new Vector3(mapWidth, mapHeight, -1f));
            Gizmos.DrawLine(new Vector3(mapWidth, mapHeight , -1f),new Vector3(0, mapHeight , -1f));
            Gizmos.DrawLine(new Vector3(0, mapHeight  , -1f),new Vector3(0, 0 , -1f));
    
    #endif
    	}
    
    }
    

    定义了几个可配置的参数:


    其中widht和height是每一个小格的尺寸,MapHeight和MapWidht是绘制网格的总体尺寸。

    最终效果:


    展开全文
  • Unity实用案例之——屏幕线和线框渲染

    万次阅读 多人点赞 2018-02-03 17:30:23
    屏幕线是一种很好的用户交互方式,通过屏幕线可以控制游戏中的各种元素,Unity提供了UnityEnige.GL库很方便的实现了这个功能。首先我们来看如何实现两点之间画线: void DrawLine(Vector3 start, Vector3 end...

    游戏里经常会遇到各种画线的需求,今天我们利用GL来实现其中的两个画线功能。

    一、屏幕画线

    屏幕画线是一种很好的用户交互方式,通过屏幕画线可以控制游戏中的各种元素,Unity提供了UnityEnige.GL库很方便的实现了这个功能。首先我们来看如何实现两点之间画线:

    void DrawLine(Vector3 start, Vector3 end) 
    {
        if (!beginDraw)
            return;
        GL.PushMatrix();
        GL.LoadOrtho();
    
        lineMaterial.SetPass(0);
        GL.Begin(GL.LINES);
    
        GL.Vertex3(start.x, start.y, start.z);
        GL.Vertex3(end.x, end.y, end.z);
    
        GL.End();
        GL.PopMatrix();
    }

    可以看到,只要确定好两点位置,调用GL.Vertex3(float x, float y, float z)将点的位置作为参数传就去就好了。
    OK,那么有了以上基础,我们稍作改动,就可以实现屏幕实时画线了,首先要记录拖动时的点的位置:

    void OnGUI()
    {
        Event e = Event.current;
    
        if (e != null && e.type != null) {
            if (e.type == EventType.MouseDown) {
                beginDraw = true;
            }
            if (e.type == EventType.MouseDrag) {
    
                if (Vector3.Distance(curPos, Input.mousePosition) > interval) {
                    curPos = Input.mousePosition;
    
                    posList.Add(new Vector3(curPos.x / Screen.width, curPos.y / Screen.height, 0));
                }
            }
            if (e.type == EventType.MouseUp) {
                beginDraw = false;
                ClearLines();
            }
        }
    }
    
    void ClearLines() 
    {
        beginDraw = false;
        posList.Clear();
        curPos = Vector3.zero;
    }

    其中,interval用来控制点与点之间的间距,然后利用GL完成点连线:

    void DrawLine() 
    {
        if (!beginDraw)
            return;
        GL.PushMatrix();
        GL.LoadOrtho();
    
        lineMaterial.SetPass(0);
        GL.Begin(GL.LINES);
        for (int i = 0; i < posList.Count - 1; i++) {
            Vector3 pos = posList[i];
    
            GL.Vertex3(pos.x, pos.y, pos.z);
            GL.Vertex3(posList[i + 1].x, posList[i + 1].y, posList[i + 1].z);
        }
    
        GL.End();
        GL.PopMatrix();
    }

    完成后效果:
    这里写图片描述
    这里需要注意的一点是,因为两点成一线,GL.Vertex3()要成对出现,比如说A,B,C三个点,那么就要写成:
    //线段AB
    GL.Vertex3(A);
    GL.Vertex3(B);
    //线段BC
    GL.Vertex3(B);
    GL.Vertex3(C);
    //线段CA
    GL.Vertex3(C);
    GL.Vertex3(A);

    而不是
    GL.Vertex3(A);
    GL.Vertex3(B);
    GL.Vertex3(C);

    二、线框渲染(Wireframe)

    将物体以线框显示,常见于特殊的游戏效果表现,或者建筑设计展示,也是3D软件中模型显示的基本功能,包括Unity里也有这个功能,但仅限于Scene窗口。那么如何在Game中实现同样的效果呢,方法也不少,今天介绍一种GL+Shader的方案。万变不离其宗,既然用了GL,那么原理还是一样的,只是这次绘制的线是基于网格顶点信息:

    private void OnRenderObject()
        {
            LineMat.SetColor("_LineColor", LineColor);
            Mesh mesh = meshFilter.sharedMesh;
    
            var vertices = mesh.vertices;
            var triangles = mesh.triangles;
    
            lines = new Vector3[triangles.Length];
            int count = 0;
            for (int i = 0; i < triangles.Length/3; i++)
            {
                lines[count++] = vertices[triangles[i*3]];
                lines[count++] = vertices[triangles[i*3 + 1]];
                lines[count++] = vertices[triangles[i*3 + 2]];
            }
    
            LineMat.SetPass(0);
    
            GL.PushMatrix();
    
            //转换到世界坐标
            GL.MultMatrix(transform.localToWorldMatrix);
    
            GL.Begin(GL.LINES);
    
            for (int i = 0; i < lines.Length/3; i++)
            {
                GL.Vertex(lines[i*3]);
                GL.Vertex(lines[i*3 + 1]);
                GL.Vertex(lines[i*3 + 1]);
                GL.Vertex(lines[i*3 + 2]);
                GL.Vertex(lines[i*3 + 2]);
                GL.Vertex(lines[i*3]);
            }
    
            GL.End();
    
            GL.PopMatrix();
        }

    可以看到,在绘制三角形的时候,首尾各一次,其他顶点出现两次。为了控制绘制线框的颜色,接下来,需要一个简单的Shader:

    Shader "LineColor" {
    
        Properties{
            _LineColor ("Line Color", Color) = (1.0, 1.0, 1.0, 1.0)
        }
    
        SubShader {
            Pass {
                Tags { "RenderType"="Opaque"}
                CGPROGRAM
    
                #pragma vertex vert
                #pragma fragment frag
    
                #include "UnityCG.cginc"
    
                struct v2f
                {
                    half4 pos : SV_POSITION;
                };
    
                fixed4 _LineColor;
    
                v2f vert(appdata_base  v)
                {
                    v2f o;
                    o.pos = mul(UNITY_MATRIX_MVP, v.vertex);
                    return o;
                }
    
                fixed4 frag(v2f i) : COLOR
                {
                    return _LineColor;
                }
    
                ENDCG
            }
        }
    }

    OK,到这里,我们把脚本拖给一个现有的模型,就大功告成啦!
    这里写图片描述
    可以看到模型和线框可以同时显示,并不冲突,而且可以改变线框为自己想要的颜色,这一切都得益于GL!今天的技能Get到了吗?

    展开全文
  • 蹭一波热度:记微信跳一跳辅助线开发 场景 前两天下午三点多时候,老板突然一个电话过来:“那个小甘啊,最近微信跳一跳小游戏很火啊,我们现在已经有了全自动脚本了,现在需要一个提升用户参与感的辅助工具,就是...

    蹭一波热度:记微信跳一跳辅助线开发

    • 场景
      前两天下午三点多时候,老板突然一个电话过来:“那个小甘啊,最近微信跳一跳小游戏很火啊,我们现在已经有了全自动脚本了,现在需要一个提升用户参与感的辅助工具,就是需要一条辅助线来帮助用户得到更高分,这个东西你来做一下,务必用最短的时间把它实现了。”唉,那么没办法只能开撸了。

    • 基本思路
      既然是辅助线,那么肯定是在所有窗口的前面,看到这个自然就想到了利用WindowManager来实现一个悬浮在所有窗口前面的Window,利用Service在后台不断更新小人头部的坐标,通过监听手指按下和弹起不断在Window中addView和removeView来绘制辅助线。Tips:监听手指在屏幕上的事件和不断寻找小人头部坐标是Native以前实现好的成熟方案=。=这里我并不会。

    • 编码实现
      1.Service关键代码
      创建没有事件的悬浮窗

    private void createToucher() {
        //赋值WindowManager&LayoutParam.
        params = new WindowManager.LayoutParams();
        windowManager = (WindowManager) getApplication().getSystemService(Context.WINDOW_SERVICE);
        //设置type.系统提示型窗口,一般都在应用程序窗口之上.
        params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;
        //设置效果为背景透明.
        params.format = PixelFormat.RGBA_8888;
        //设置flags.不可聚焦及不可使用按钮对悬浮窗进行操控.
        params.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
            | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
            | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
            | WindowManager.LayoutParams.FLAG_FULLSCREEN
        ;
    
        //设置窗口初始停靠位置.
        params.gravity = Gravity.LEFT | Gravity.TOP;
        params.x = 0;
        params.y = 0;
    
        params.width = WindowManager.LayoutParams.WRAP_CONTENT;
        params.height = WindowManager.LayoutParams.WRAP_CONTENT;
      }

    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
    | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
    | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE这三个标记很重要,不加会拦截事件,导致其他窗口无法响应事件。

    监听手指按下与弹起并绘制辅助线

     @Override
          public void onTouchDown() {   /*手指按下时开始画线*/
            try {
              if (point.x != -1 && point.y != -1) {
                lineView = new LineView(DrawLineService.this);
                lineView.start(point.x, point.y);
                windowManager.addView(lineView, params);
              }
            } catch (Exception ignored) {
            }
          }
          @Override
          public void onTouchUp() {
            try {   /*手指弹起时释放画线*/
              lineView.stop();
              windowManager.removeView(lineView);
            } catch (Exception ignored) {
            }
          }

    2.辅助线的View

    public class LineView extends View {
    
      private static final float SPEED_X = 0.60f / 1080f;
      private static final float SPEED_Y = 0.35f / 1920f;
    
      private float mx, my, incrementY, incrementX;
      private int mWidth;
      private int mHeight;
    
      private long startTime;
      private Timer mTimer = new Timer();
      TimerTask mTimerTask;
      Paint p;
    
      private float mHeadOffset;
      public static float gOffset = 1f;
    
      /*因为底层接口返回的是小人头部坐标 线需要从脚部开始划 所以需要调整*/
      private float mDefaultHeadOffset = 40f;  
    
      public LineView(Context context) {
        super(context);
        init();
      }
    
      private void init() {
        DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
        mWidth = displayMetrics.widthPixels;
        mHeight = displayMetrics.heightPixels;
        p = new Paint();
        p.setColor(Color.RED);
        p.setAntiAlias(true);
        p.setStrokeWidth(10.0f);
        mHeadOffset = ConvertUtils.dip2px(getContext(), mDefaultHeadOffset);
      }
    
      @Override
      protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        canvas.drawLine(mx, my, incrementX, incrementY, p);// 斜线
      }
    
    
      /**
       * 手指按压住以后该方法执行,内部使用TimerTask完成直线绘制
       *
       * @param x 小人头部x坐标
       * @param y 小人头部y坐标
       */
      public void start(float x, float y) {
        startTime = System.currentTimeMillis();
        y += mHeadOffset;  /*小人脚部y坐标*/
        this.incrementX = x;
        this.incrementY = y;
        this.mx = x;
        this.my = y;
        if (isRight(mx)) {
          mTimerTask = new TimerTask() {
            @Override
            public void run() {
              float ellapsed = System.currentTimeMillis() - startTime;
              /**
               * tips:0.35和0.60是根据测试结果调出来的 需要根据实际情况优化
               */
              incrementY = my - ellapsed * SPEED_Y * mHeight * gOffset;   /* y / x = 0.58*/
              incrementX = mx - ellapsed * SPEED_X * mWidth * gOffset;
              postInvalidate();
            }
          };
        } else {
          mTimerTask = new TimerTask() {
            @Override
            public void run() {
              float ellapsed = System.currentTimeMillis() - startTime;
              incrementY = my - ellapsed * SPEED_Y * mHeight * gOffset;
              incrementX = mx + ellapsed * SPEED_X * mWidth * gOffset;
              postInvalidate();
            }
          };
        }
        /*每隔10ms绘制一次*/
        mTimer.schedule(mTimerTask, 0, 10);
      }
    
      /**
       * 手指松开时调用该方法,调用时停止画线
       */
      public void stop() {
        mTimerTask.cancel();
        mTimerTask = null;
      }
    
      /**
       * 判断当前小人在左边还是右边(根据左右来判断斜线往哪边画)
       * @return true 右边 false坐标
       */
      private boolean isRight(float x) {
        WindowManager wm = (WindowManager) getContext().getSystemService(Context.WINDOW_SERVICE);
        int width = wm.getDefaultDisplay().getWidth();
        if (x < width / 2) {
          return false; //left
        } else {
          return true;
        }
      }
    }
    • 最后附上效果图

    这里写图片描述

    展开全文
  • 该代码为作者本人在2002年下半年刚开始用到Delphi时,为了尽快熟悉函数、编程环境所做,代码中可能存在一些并不合理的Delphi用法和技巧:)而且,有的地方因为偷懒,代码比较乱;代码中有冗余代码,是在不断的改写...
  • 原理:通过 ADB 获取截图,识别跳跃起点和终点,模拟触摸事件 因此需要开启 USB 调试以及截图和模拟触控权限 步骤:1、下载 ADB,并解压 ... 1080P 屏幕下默认值为1480 跳跃时间间隔 默认 5000, 单位ms
  • 辅助线的概念 绘制线规则 捕捉辅助线的思路 生成辅助线的思路 总结 在实际绘制几何图形过程时,有几个工具比较实用: 鼠标绘制时,焦点捕捉已绘制图形的端点、线段上; 撤销与回退 辅助线 焦点捕捉的功能的...
  • 小甲鱼零基础入门学习python笔记

    万次阅读 多人点赞 2019-08-14 11:06:30
    小飞机诞生 小飞机移动一个位置 屏幕刷新 if 用户鼠标产生移动: 我方飞机中心位置 = 用户鼠标位置 屏幕刷新 if 我方飞机与小飞机发生肢体冲突: 我方挂,播放撞机音乐 修改我方飞机图案 打印“Game over" 停止背景...
  • //关闭绘图界面 } \qquad这段代码很容易理解,运行这段程序,就会出现逐渐明亮的屏幕。因为不断刷新背景色为 RGB(i,i,i)RGB(i,i,i)RGB(i,i,i)。C语言中的颜色使用十六进制表示的,RGB函数可以将0~255范围内的三个...
  • //屏幕显示温度 //====MPU6050数据获取==== if((t%10)==0) { if(mpu_dmp_get_data(&pitch,&roll,&yaw)==0) { MPU_Get_Accelerometer(&aacx,&aacy,&aacz); //得到加速度传感器数据 SVM = ...
  • TensorFlow入门

    千次阅读 多人点赞 2019-04-23 10:09:29
    目前, TensorFlow 的 Python库更加易用, 它提供了大量的辅助函数来简化构建图的工作, 这些函数尚未被 C 和 C++ 库支持. 三种语言的会话库 (session libraries) 是一致的. 构建图 构建图的第一步, 是创建源 op...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
    百度云盘分享 简介 笔者当初为了学习JAVA,收集了很多经典源码,源码难易程度分为初级、中级、高级等,详情看源码列表,需要的可以直接下载! 这些源码反映了那时那景笔者对未来的盲目,对代码的热情、执着,对...
  • PhotoShop入门到精通(一)

    千次阅读 多人点赞 2019-03-31 17:33:56
    它可以保存图像中的图层、通道、辅助线和路径等信息。一般寻找素材会选择PSD格式,文件做完或者没做完都习惯性保存PSD源文件,方便后期修改。由于PSD格式所包含的图像数据信息比较多,因此比其他格式的图像文件要大...
  • 【计算机图形学】中点画圆算法和Bresenham画圆算法

    万次阅读 多人点赞 2016-11-06 18:27:10
    参数xc和yc是圆心坐标,r是半径,CirclePlot()函数是参照圆的八分对称性完成八个点的位置计算的辅助函数。 2 、  改进的中点画圆法-Bresenham算法    中点画圆法中,计算判别式d使用了浮点运算,影响了...
  • 提供直线、箭头、矩形、圆角矩形、椭圆、铅笔、连接线、多边形、曲线、闭合曲线、文字、按钮、图片、音乐、矩形标注、圆角矩形标注、椭圆标注、组合图形、片尾等各种元件,可以在编辑中自由使用、组合、应用这些元件...
  • 桌面粉笔是一款随意在桌面画线的工具 桌面线条 随意画线 演示必备
  • 用户可以将Framebuffer看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。这种操 作是抽象的,统一的。用户不必关心物理显存的位置、换页机制等等...
  • Axure RP Pro 是专为 Rapid Prototype Design 而生,它可以辅助产品经理快速设计完整的产品原型,并结合批注、说明以及流程图、框架图等元素将产品完整地表述给各方面设计人员,如 UI、UE 等等,并在讨论中不断完善...
  • 1.iPhone尺寸规格 设备 iPhone ...对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS 2.4 inches (62.1 mm) 4.5 inches
  • Android 倒车影像车道线,3D效果

    千次阅读 2019-08-20 17:37:29
    Android 倒车影像车道线 直接上代码 public class LaneLineView extends View { private Paint paint; private Camera camera; private Matrix matrix; //尺度标记得长短,可调整 private int tran ...
  • SPX Bundle 集合了 Moodysoft 出品的 SPX Instant Screen Capture 5.0 屏幕截图工具、SPX Studio 2.1 截图辅助处理工具和 SPX Editor 2.0 图像编辑工具的简体中文汉化版!  SPX Instant Screen Capture 是一小巧的...
  • 微信跳一跳游戏简单辅助

    千次阅读 2018-01-04 13:25:59
    最近,微信更新之后开始支持微信游戏小...当然,网上的辅助器大概分为三类: – 直接修改数据 – 使用机械代替手指 – 使用 python 自动实现点击刷分 主流方法简介 在这儿,简单对这几种方法进行一个简单介绍
  • Flutter 屏幕适配

    千次阅读 多人点赞 2020-09-15 18:18:57
    志当存高远。——诸葛亮 屏幕尺寸大全 菜单栏共有5个选项,...如果一块手机屏幕的物理尺寸是 5.0英寸,即是指该手机屏幕对角线的长度。 屏幕分辨率 屏幕分辨率是指屏幕图像的精密度,是显示器所能显示的...
  • js实现鼠标吸附线条效果 开发中遇到什么学习什么: 最近百度查东西的时候,看到很多网站...百度学习了一下,其实没有你想象的难,一个js就搞定了 不说了看效果 在手机端浏览的页面上加个mouseline.js Q群261403514 ...
  • 上图中的虚线为水平线,点线为屏幕的中心点到摄像头的连线,β为中心线和水平线的夹角 将上图进行简化可转为下列数学问题,等腰三角形中同顶点成已知角度所相应的边长,简化后的计算如图三。 通过正弦定理、几何...
  • unity linerenderer在Game窗口中任意画线

    千次阅读 2018-06-04 09:49:25
    1,设置linerenderer的颜色和其它参数。2,新建一个空物体挂脚本。3,LineMark.csusing System.Collections; using System.Collections.Generic; using UnityEngine; public class LineMark : MonoBehaviour { ...
  • iphone 屏幕大小及计算

    千次阅读 2016-04-14 01:34:19
    1.iPhone尺寸规格 设备 iPhone ...对角线 Diagonal 逻辑分辨率(point) Scale Factor 设备分辨率(pixel) PPI 3GS 2.4 inches (62.1 mm) 4.5 inches
  • 如何让iPad变成Mac的扩展屏幕

    千次阅读 2019-08-09 11:19:17
    很多人都喜欢一边使用...那么应该如何让iPad变成Mac的扩展屏幕呢? 之前也有使用一些能把iPad设置为Macbook外置屏幕的第三方软件,比如比较出名的Duet Display。 只要在Mac和iPad上下载并安装上Duet Display,然后...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,236
精华内容 10,094
关键字:

屏幕辅助线