Android:绘制到画布,使左下角对应于(0,0)的方法?

发布于 2024-11-24 03:13:55 字数 93 浏览 1 评论 0原文

我正在尝试编写一个可以在 Android 中使用的图形类(我知道存在预制的图形类),但是转换我的所有坐标将是一件痛苦的事情。有没有一种简单的方法可以使屏幕坐标从左下角开始?

I'm trying to write a graph class I can use in Android(I'm aware pre-made ones exist), but converting all of my coordinates would be a pain. Is there an easy way to make the screen coordinates start at the bottom left?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

眼角的笑意。 2024-12-01 03:13:55

不,我不知道如何将 0,0 移动到左下角并获得您通常认为的“正常”坐标。

但是将 scale()translate() 结合起来可能会达到相同的效果。

canvas.translate(0,canvas.getHeight());   // reset where 0,0 is located
canvas.scale(1,-1);    // invert

No, I don't know of a way to move 0,0 to the bottom left and get what you would typically think of as "normal" coordinates.

But combining scale() and translate() might do the trick to achieve the same effect.

canvas.translate(0,canvas.getHeight());   // reset where 0,0 is located
canvas.scale(1,-1);    // invert
自找没趣 2024-12-01 03:13:55

您可以使用 canvas.scale(1, -1) 之类的方法翻转画布,然后将其平移到正确的位置。

You can flip your Canvas with something like canvas.scale(1, -1) and then translate it to the right place.

一刻暧昧 2024-12-01 03:13:55

您可以使用 canvas.translate() http://developer.android.com/reference/android/graphics/Canvas.html#translate(float, float) 将原点移动到您想要的位置。

You can use canvas.translate() http://developer.android.com/reference/android/graphics/Canvas.html#translate(float, float) to move the origin to where you want.

战皆罪 2024-12-01 03:13:55

Android 画布的原点位于左上角。你想把它翻译到右下角。要进行此转换,请从画布高度中减去 y 坐标。

float X1 = xStart;
float Y1 = canvas.getHeight() - yStart;  //canvas is a Canvas object
float X2 = xEnd;
float Y2 = canvas.getHeight() - yEnd;
canvas.drawLine(X1, Y1, X2, Y2, paint ); //paint is a Paint object

这应该使你的线从左下角开始。

The android canvas has the origin at the top left. You want to translate this to the bottom right. To do this translation, subtract the y co-ordinate from the Canvas height.

float X1 = xStart;
float Y1 = canvas.getHeight() - yStart;  //canvas is a Canvas object
float X2 = xEnd;
float Y2 = canvas.getHeight() - yEnd;
canvas.drawLine(X1, Y1, X2, Y2, paint ); //paint is a Paint object

This should make your line start from the bottom left.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文