我想编程一个将:
的应用程序- 在触摸屏上显示图像(JPEG,HD,1920 x 1080 PX(。
- 当用户触摸屏幕并取代他/她的手指时,图像将替换来自另一个图像的像素的"触摸"区域的像素。
我听到有人在谈论" unity"(2d?3d?(可以做到这一点。然后我看到有一个能够考虑触摸屏设备的SDL_2软件包。
->你们中的一些人会建议我吗?哪种开发系统可能是我想要的最佳选择?您认为哪种语言可能是最适合的语言?我要寻找的系统在处理图像时必须非常快,才能提供"流体"行为。
很抱歉这个初学者的问题,但是由于我现在为了弄清楚如何实施它将是一项非常艰苦的工作,至少我想从最佳起点开始。
非常感谢您,我真的很期待对此有任何建议。
最好的问候
p.cordo
在Unity3D中很容易实现类似的东西。根据它的要求,似乎将是2D应用程序。
仅出于逻辑,它似乎很容易实现。显示图像(PNG/JPG(以全屏尺寸为输入触地得分,并找出像素坐标。一旦将坐标设置为将这些像素的alpha值设置为0。在这种情况下,您可能需要使用尺寸因子来导致删除单像素在一般情况下可能看不到。
对于覆盖效果,您可以考虑使用Unity UI并维护适当的Z订单以进行图像,并进行射线播放以选择以删除像素的图像。
作为参考,我也附上了一个脚本,请查看:
public class ImageUpdate : MonoBehaviour {
public Texture2D tex;
public int size = 25;
Color32[] texPix;
int width,height;
void Start()
{
//Initialising image components
GetComponent<RawImage> ().texture = tex;
width = tex.width;
height = tex.height;
texPix = tex.GetPixels32 ();
tex = new Texture2D (width, height, TextureFormat.ARGB32,false);
tex.SetPixels32 (texPix);
}
void Update()
{
//Update this to touch for mobile devices
if (Input.GetMouseButton (0)) {
Vector2 pixelPos = Input.mousePosition;
//Removing the touched pixels
for(int i=-size;i<size;i++)
for(int j=-size;j<size;j++)
tex.SetPixel ((int)Mathf.Clamp(i + pixelPos.x,0,width), (int)Mathf.Clamp(j + (int)pixelPos.y,0,height), new Color (0, 0, 0, 0));
UpdateImage ();
}
}
void UpdateImage()
{
//tex = new Texture2D (width, height, TextureFormat.ARGB32,false);
//tex.SetPixels32 (texPix);
//Applying the updates
tex.Apply ();
GetComponent<RawImage> ().texture = tex;
}
}
现在,您唯一需要记住的是将图像分辨率映射到屏幕分辨率。如果图像与屏幕分辨率不同,则可以使用偏移值来调整差距。