我正在使用Canvas绘制Bitmap。
考虑这是我的位图(点只是空格,x标记点):
........
......x.
........
........
........
如果我画这个盒子:
###
###
###
从x
开始,我会得到这个:
........
......##(#)
......##(#)
......##(#)
........
但是我希望在最左边绘制那些“漏洞”的#
s,好像这个位图被包裹了一样。像吃豆人一样。
所以基本上,我想要的是指示Canvas不要在(x, y
)但是(x % width, y % height
)绘制像素的某种方式。有任何简单的方法来实现这一目
另一个例子,假设我想从(宽度 - 1,高度 - 1)开始绘制相同的3x3盒子/方块,然后我想得到这个:
##.....#
##.....#
........
........
##.....#
据我所知,从文档中可以看出,没有内置函数可以让你实现你想要的东西。由于您直接处理画布对象,因此假设应用程序将处理所有像素级别的绘图信息。
就像你提到的那样,在应用程序中有不止一种方法可以做到这一点,但不幸的是没有开箱即用的方法。
你不能用
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
x=metrics.heightPixels;
y=metrics.widthPixels;
和
u=bitmap.getWidth();
v=bitmap.getHeight();
您可以从这四个数字中轻松找出应该绘制框的数字。
回答您的编辑:如果方块的一部分偏离屏幕右侧xx,则在xx位置的屏幕上绘制它。如果它在xx的左侧,则在screenWidth-xx位置绘制它。
如果屏幕“移动”,即你可以在屏幕上滚动,那么你将不得不多做一点。
我认为你不能把同一张图片包起来。你可以做的是当右边的一个图像离开屏幕时,向左插入第二个图像。
所以,例如..让图像为4x4单位。如果它以1个单位离开屏幕(右侧),则右侧可见3x4,左侧可看到1x4(新图像)。同样的方法可以解决顶部和底部问题。