使用ReadPixels方法,实现对游戏截取任意位置的屏幕,以及保存和显示截取结果
来源:互联网 发布:数据直报系统 编辑:程序博客网 时间:2024/05/22 02:26
代码如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.UI;
public class ReadPixelsCtr : MonoBehaviour {
private int capBeginX;
private int capBeginY;
private int capFinishX;
private int capFinishY;
public Image showImg;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown (0)) {
Vector3 mousePos = Input.mousePosition;
Vector2 beginPos = new Vector2 (mousePos.x, mousePos.y);
capBeginX = (int)mousePos.x;
capBeginY = (int)mousePos.y;
}
if (Input.GetMouseButtonUp (0)) {
Vector3 mousePos = Input.mousePosition;
Vector2 finishPos = new Vector2 (mousePos.x, mousePos.y);
capFinishX = (int)mousePos.x;
capFinishY = (int)mousePos.y;
//重新计算截取的位置
int capLeftX = (capBeginX < capFinishX) ? capBeginX : capFinishX;
int capRightX = (capBeginX < capFinishX) ? capFinishX : capBeginX;
int capLeftY = (capBeginY < capFinishY) ? capBeginY : capFinishY;
int capRightY = (capBeginY < capFinishY) ? capFinishY : capBeginY;
Rect rect=new Rect(capLeftX,capLeftY,capRightX,capRightY);
StartCoroutine( Captrue (rect));
}
}
IEnumerator Captrue(Rect rect){
int t_width = Mathf.Abs (capFinishX - capBeginX);
int t_length = Mathf.Abs (capFinishY - capBeginY);
yield return new WaitForEndOfFrame ();
Texture2D t = new Texture2D(t_width , t_length,TextureFormat.RGB24, true);//需要正确设置好图片保存格式
t.ReadPixels(rect, 0, 0, false);//按照设定区域读取像素;注意是以左下角为原点读取
t.Apply();
byte[] byt = t.EncodeToPNG();
File.WriteAllBytes(Application.dataPath + Time.time + ".png", byt);
Sprite target = Sprite.Create (t, new Rect(0, 0, t_width, t_length), Vector2.zero);
showImg.sprite = target;
}
}
- 使用ReadPixels方法,实现对游戏截取任意位置的屏幕,以及保存和显示截取结果
- ScreenBase实现屏幕任意区域的截取
- ScreenBase实现屏幕任意区域的截取
- ScreenBase实现屏幕任意区域的截取
- 截取屏幕的实现方法
- AndEngine实现屏幕截取和图片保存
- VC实现对屏幕的截取
- C#实现截取当前屏幕的方法
- 【屏幕PrtSc键的使用,截取对话框和全屏截取】
- ios截取屏幕指定位置指定大小的实现
- java实现截取屏幕保存为图片
- Unity3D截取界面任意位置生成图片并保存
- 截取控件和屏幕图片并保存
- 截取屏幕的一种方法
- QT截取屏幕的实现
- 屏幕截取功能的实现
- QT截取屏幕的实现
- Unity--截取屏幕任意区域
- 计算机系统的虚拟内存
- table表头固定表体滚动
- 光学标定 (非计算机)
- Sagheer and Nubian Market
- oralce优化
- 使用ReadPixels方法,实现对游戏截取任意位置的屏幕,以及保存和显示截取结果
- tyer
- Python 2.7.x 和 3.x 版本的重要区别
- 多态、抽象
- Android Studio gradle 文件中 ${supportLibVersion} 用法
- logback日志
- 接口、异常
- am start
- ios-图形上下文栈