如何将图片放在设备的左上角?

时间:2013-06-21 03:23:09

标签: image position corona

CORONA SDK

我认为这是配置问题。

当我打开电晕时,我输入了720和1280的尺寸,因为我想将我的观点主要改为星系3。

这是必要的吗?我可以点击手机预设并继续吗?然后将我的视图更改为我想要的任何设备?

问题是当我输入时:

place1 = display.newImage("room.jpg")

图像确实显示出来。

现在,我想要修改图像。 我希望它的宽度是屏幕的一半。 我希望它的高度是屏幕的1/5。

我尝试过一些东西,但没有任何效果。

然后我取代了:

place1 = display.newImageRect("room.jpg" , display.contentWidth/2 , 
display.contentHeight/2)

但这导致图像被推向远处向左和向上,你很难看到它!

如何显示图像,修改其尺寸,并将其放置在屏幕的左上角,而不会将其裁剪掉?

2 个答案:

答案 0 :(得分:1)

它从最左边向上推,因为图像的参考点指向中心我认为你需要对它进行一些计算才能使它在屏幕的左上方我为我的图像创建了一些计算在topleft上做出参考点希望这可以帮助你

local place1 = display.newImage("Images/place1.png", 0,0,true)
place1 .xScale = (0.5 * place1 .contentWidth)/place1 .contentWidth
place1 .yScale = place1 .xScale
place1 .x = place1 .contentWidth / 2
place1 .y = place1 .contentHeight / 2

只需更改place1.x的值即可创建您想要的位置

答案 1 :(得分:1)

首先,我专门为银河s3绘制了一些东西。所以第一步是在电晕中打开一个新项目后立即将该设备的屏幕尺寸输入配置或预设区域。 720 x 1280。

然后一定要将视图从iPhone(默认)更改为galaxy s3以使用所有内容空间区域,因为iphone是小的。

因此。 我从这开始:

第1步

local place1 = display.newImageRect("map/1.billiard.jpg", 720, 1280)
place1.x = 720
place1.y = 1280

产生了

enter image description here

然后我告诉自己,电晕正在图像的中心,所以如果我可以让图像的中心位于屏幕/显示器的中间....因为现在,电晕的中心image是720,1280,这是我在galaxy s3的set配置区域中可用的最后一个坐标。 (右下角)

所以我做了这个

第2步

local place1 = display.newImageRect("map/1.billiard.jpg", 720, 1280)
place1.x = 720/2
place1.y = 1280/2

产生了

enter image description here

请记住,我故意将图像720的尺寸设为1280以完全填满整个屏幕,这样我就可以获得一种位置感。

然后,我告诉自己我现在需要改变图像的尺寸,我希望它是屏幕x距离的1/2,以及屏幕y距离的1/5。

所以我做了这个

第3步

local place1 = display.newImageRect("map/1.billiard.jpg", 720/2, 1280/5)
place1.x = 720/2
place1.y = 1280/2

产生了

enter image description here

此时,我的图像居中在屏幕中间,有我想要的尺寸,所有我要做的就是把它放在左上角,因为会有其他房间以网格方式。 (例如,一旦正确放置,另一个房间将适合该图像右侧的空间)

所以我做了这个

第4步

local place1 = display.newImageRect("map/1.billiard.jpg", 720/2, 1280/5)
place1.x = 720/2 - (.5*place1.contentWidth)
place1.y = 1280/2

产生了 enter image description here

只要通过观察就可以看出,如果它位于中心,你需要减去图像x距离的一半,使其位于手机的左边缘 - 这个实验的重点。这是有效的,因为我将图像居中,并使其首先适合整个屏幕。现在到手机边缘的所有距离都是相对于图像的x和y距离。 :DD

继续。,,

将图片置于上边缘

我做了这个

第5步

local place1 = display.newImageRect("map/1.billiard.jpg", 720/2, 1280/5)
place1.x = 720/2 - (.5*place1.contentWidth)
place1.y = 1280/2 - (2*place1.contentHeight)

产生了

enter image description here

因为我需要减去图像y距离的两倍。

瞧!

图像位于左上角并伸展到我想要的尺寸。现在一切都是相对于图像的距离,例如,如果我想要在这个下方的另一个房间,我可以(从步骤4开始),减去图像的一个距离而不是该距离的两倍。

像这样

local place1 = display.newImageRect("map/1.billiard.jpg", 720/2, 1280/5)
place1.x = 720/2 - (.5*place1.contentWidth)
place1.y = 1280/2 - (2*place1.contentHeight)

local place1 = display.newImageRect("map/1.billiard.jpg", 720/2, 1280/5)
place1.x = 720/2 - (.5*place1.contentWidth)
place1.y = 1280/2 - (1*place1.contentHeight)

,这会产生

enter image description here

这些:

object.contentWidth
object.contentHeight

在试图将图像向左或向右移动其自身宽度或高度的某一部分时派上用场。

以前的方法有助于通过使用图像的默认中心参考点来理解定位图像,并从将图像定位在显示屏的中心开始!

另一种更容易的方式: 将图像的参考点更改为左上角参考点,然后从那里控制事物。在这种情况下,图像的x和y位置为0,将其置于屏幕的左上角,然后从那里将尺寸更改为显示屏高度的1/5和显示屏宽度的1/2。 :d

这样的事情效率更高:

_W = display.contentWidth
_H = display.contentHeight

local place1 = display.newImageRect("map/1.billiard.jpg", _W/2, _H/5)
place1:setReferencePoint(display.TopLeftReferencePoint)
place1.x = 0
place1.y = 0

问题已解决