如何获取屏幕原点(左上角)?

时间:2014-02-24 15:10:20

标签: c# xna

我正在构建游戏,我想找到窗口的左上角。

(0,0)因为角色正在移动而摄像机正在跟随他。 我必须找到另一种方式,然后通过根据角色计算点数。

也许某些已经构建进入XNA?

我添加了一些照片:

1)http://i.stack.imgur.com/ytpV9.png

2)http://i.stack.imgur.com/rx71u.png

我需要另一种方法来做到这一点。 请告诉我你是否有想法或是否有可能。

修改 相机代码:

public class Camera
{
    public Matrix Mat { get; private set; }
    V2 pos;
    IFocus focus { get; set; }
    F zoom;
    Viewport vp;

    //ctor
    public Camera(IFocus focus , Viewport vp , F zoom)
    {
        this.focus = focus;
        this.zoom = zoom;
        this.vp = vp;
        this.pos = V2.Zero;
    }

    public void update()
    {
        Mat = Matrix.CreateTranslation(-pos.X, -pos.Y, 0) *
              Matrix.CreateRotationZ(0) * //-focus.Rot 
              Matrix.CreateScale(zoom , zoom , 1) * 
              Matrix.CreateTranslation(vp.Width / 2 , vp.Height / 2 , 0);
        this.pos = V2.Lerp(this.pos, focus.Pos, 0.97f); 
    }

绘图代码:

class Drawing : IFocus
{
    #region Data
    protected T2 tex;
    protected V2 org;
    protected Rec? rec;
    public V2 Pos { get; set;}
    C color;
    public F Rot { get; set;}      
    protected V2 scale;
    protected SE se;
    F layer; 
    #endregion
    //Rec? - can be NULL
    #region ctor
    public Drawing(T2 tex, V2 pos, Rec? rec, C color, F rot, V2 org, V2 scale, SE se, F layer)
    {
        this.tex = tex;
        this.Pos = pos;
        this.rec = rec;
        this.color = color;
        this.Rot = rot;
        this.org = org;
        this.scale = scale;
        this.se = se;
        this.layer = layer;
        Game1.CallDraw+=new SigDraw(Draw);
    } 
    #endregion

    #region Drawing
    public virtual void Draw()
    {
        Game1.spriteBatch.Draw(tex, Pos, rec, color, Rot, org, scale, se, layer);
    }

2 个答案:

答案 0 :(得分:0)

如果它的控制然后你传递控件得到点对象

private static Point FindLocation(Control ctrl)
{
Point p;
for (p = ctrl.Location; ctrl.Parent != null; ctrl = ctrl.Parent)
    p.Offset(ctrl.Parent.Location);
return p;
}

答案 1 :(得分:0)

当涉及0,0个起源时,你有3种类型,你有模型,世界观和视口,它取决于你试图到达的代码部分。

如果您在模型上寻找0,0,它将指向模型的左上角。如果您在世界观中寻找0,0它将位于您所在区域的左下角(地图),如果您正在寻找视口0,0,它将位于左上角。

您目前正在使用模型在世界视图中查找您的位置。而是尝试在您的世界中存储和使用您的视口位置,并相对于此设置您的模型/角色位置。

如果不知道任何代码,任何人都很难直接提供帮助。