1

我正在使用 Canvas 在位图上绘图。

考虑这是我的位图(点只是空白,x 标记点):

........
......x.
........
........
........

如果我画这个框:

###
###
###

从 开始x,我会得到这个:

........
......##(#)
......##(#)
......##(#)
........

但我希望在最左边绘制那些“泄漏” #,就好像这个位图被包裹了一样。就像吃豆人一样。

所以基本上,我想要的是某种方式来指示 Canvas 不要在 ( ) 处绘制像素,x, y而是在 ( )处绘制像素x % width, y % height。有什么简单的方法可以实现这一点吗?

另一个例子,假设我想从 (width - 1, height - 1) 开始绘制相同的 3x3 框/正方形,那么我想得到这个:

##.....#
##.....#
........
........
##.....#
4

3 回答 3

0

你不能用

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 位置绘制它。

如果屏幕“移动”,即您可以在屏幕上滚动,那么您将不得不做更多的事情。

于 2012-07-31T16:25:43.500 回答
0

我不认为你可以总结出同样的形象。您可以做的是在右侧的图像离开屏幕时在左侧插入第二张图像。

因此,例如.. 让图像为 4x4 单位。如果它离开屏幕(右侧)1 个单位,则右侧可见 3x4,左侧可见 1x4(新图像)。同样的方式你可以解决顶部和底部。

于 2012-07-31T17:00:30.290 回答
0

据我从文档中可以看出,没有内置功能可以让您实现所需的功能。由于您直接处理画布对象,因此假设应用程序将处理所有像素级绘图信息。

就像您提到的那样,在应用程序中有不止一种方法可以做到这一点,但不幸的是没有开箱即用的方法。

于 2012-07-31T18:08:29.917 回答