C# - 在图片框外部和上方绘制文字

时间:2015-04-10 14:02:59

标签: c# winforms text draw

我目前正在制作一款游戏,其中玩家是PictureBox,可以移动。我正在努力在播放器(PictureBox)上面添加一个名称标签。我似乎无法将文本的X和Y位置设置在框外。它只是落在里面。我制作了一张照片,展示并描述了我想要实现的目标:

image

这是我绘制角色名称的代码。顺便说一句,我的角色名称存储在变量 CharacterName.charName

private void Main_Load(object sender, EventArgs e)
    {
        //Draw character name upon start
        ListToPaint.Add(new WhatToPaint { X = 10, Y = 10, Text = CharacterName.charName });
    }

    private List<WhatToPaint> ListToPaint = new List<WhatToPaint>();
    private class WhatToPaint
    {
        public int X { get; set; }
        public int Y { get; set; }
        public string Text { get; set; }
    }

    private void player_Paint(object sender, PaintEventArgs e)
    {
        //This is the "Paint" properties on my PictureBox, called Player
        e.Graphics.Clear(Color.White);
        foreach (WhatToPaint wp in ListToPaint)
        {
            e.Graphics.DrawString(wp.Text, this.Font, Brushes.Black, wp.X, wp.Y);
        }
    }

1 个答案:

答案 0 :(得分:0)

如果你将Label放在与PictureBox相同的容器中(不在pictureBox中),你可以使用坐标数学将它(y)像素放在PictureBox上面

例如,您可以将标签和图片框放入透明面板中。然后,您可以将整个面板作为Label-PictureBox单元移动。然后Label和PictureBox将具有相同的坐标引用(因为它们在同一个容器中)。

要使Label文本居中(无论文本如何),请执行类似于使用文本框宽度的内容来查找中点的位置。然后将Label偏移到该中点(更多坐标数学)。