当前位置: 首页 > 知识库问答 >
问题:

有没有内置的Android功能来包装画布绘图?

杜祺
2023-03-14

我正在使用画布绘制位图。

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

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

如果我画这个盒子:

###
###
###

从x开始,我会得到:

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

但是我想把那些“漏洞百出的”绘制在最左边,就好像这个位图是包装好的一样。就像吃豆人一样。

所以基本上,我想要的是某种方法来指示画布不要在(x,y)处绘制像素,而是(x%宽度,y%高度)。有什么简单的方法可以做到这一点吗?

另一个例子,假设我想从(宽度-1,高度-1)开始绘制相同的3x3长方体/正方形,然后我想得到以下结果:

##.....#
##.....#
........
........
##.....#

共有3个答案

邹海超
2023-03-14

我不认为你能把同样的形象包装起来。你可以做的是,当右边的图像离开屏幕时,在左边插入第二个图像。

例如。。让图像为4x4单元。如果它离开屏幕(右侧)1个单位,则右侧可以看到3x4,左侧可以看到1x4(新图像的)。同样的方法,你可以围绕顶部和底部工作。

羊舌承
2023-03-14

你不能用吗

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

x=metrics.heightPixels;
y=metrics.widthPixels;

  u=bitmap.getWidth();
  v=bitmap.getHeight();

你可以很容易地从这四个数字中找出方框应该画在哪里。

回答您的编辑:如果部分正方形偏离屏幕右侧xx,则在屏幕上的xx位置绘制。如果它偏离左侧xx,则在屏幕宽度xx的位置绘制。

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

邹修真
2023-03-14

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

就像你提到的,在应用程序中有不止一种方法可以做到这一点,但不幸的是,没有现成的方法。

 类似资料:
  • 我想为游戏乒乓球创建一个简单的游戏菜单。在背景中有一个球在边缘反弹,只是为了看起来漂亮。现在我想在这个菜单屏幕上添加按钮。但是背景不再画了。所以我想画一个实时背景,但是按钮应该仍然留在前面。这个实时背景是用循环实现的。下面是GUI类和DrawStartMenueClass。 我听说过图层,但是每个人都在NetBeans中用某种工具来使用它们,我有日蚀,所以我没有那个机会。我想你可以把按钮和背景放在

  • 我正在寻找一个路径生成图像(jpeg或png)从一个flutter应用程序。图像将由圆、线、文本等组成。 似乎有一种使用画布(https://docs.flutter.io/flutter/dart-ui/canvas/canvas.html)绘制到屏幕上的方法,但是似乎没有类似的方法来创建可以在应用程序内部呈现或在应用程序外部发送/使用的图像。 是否有任何dart库可用于绘制图像?考虑到底层的s

  • 我正在运行Ubuntu 16.04。在Android Studio上,当我试图在模拟器中运行我的应用程序时,我得到以下错误: 致命的例外:主要过程:项目名称在这里,PID: 2528java.lang.运行时间例外:画布:试图绘制太大(216090000bytes)位图。在android.view.DisplayListCanvas.throw如果不能绘制(DisplayListCanvas.ja

  • 问题内容: 当查看该方法的源代码时,我发现以下语法:存在没有主体的导出函数签名,以及包含实现的同一签名的非导出版本: 我认为这是一些语法,可让您轻松导出本地函数。那是对的吗?为什么不这样做而不仅仅是拥有一个导出函数并在包中使用它呢? 问题答案: 根据Go语言规范。 函数声明可以省略主体。这样的声明为Go外部实现的功能(例如汇编例程)提供了签名。 在这种情况下,该功能由386中的体系结构特定的汇编文

  • 如何获取我手指的触摸事件和运动事件然后绘制?

  • 本文向大家介绍Android DrawerLayout带有侧滑功能的布局类(2),包括了Android DrawerLayout带有侧滑功能的布局类(2)的使用技巧和注意事项,需要的朋友参考一下 ActionBarDrawerToggle: 在前一张中我们并没有使用drawLayout.setDrawerListener();  对应的参数对象就是DrawerLayout.DrawerListen