C# 用户更改坐标值时如何更改抽绳位置

C# 用户更改坐标值时如何更改抽绳位置,c#,c#-4.0,C#,C# 4.0,我计划在图片框上写些东西。在页面加载事件中,我可以做到这一点 Graphics g = Graphics.FromImage(pictureBox1.Image); Font font = new Font("Courier New", 6); payagainst = "PARADISE TRADING, CONT & REAL ESTATE"; g.DrawString(payagainst, font, new S

我计划在图片框上写些东西。在页面加载事件中,我可以做到这一点

 Graphics g = Graphics.FromImage(pictureBox1.Image);
        Font font = new Font("Courier New", 6);      

        payagainst = "PARADISE TRADING, CONT &  REAL ESTATE";

        g.DrawString(payagainst, font, new SolidBrush(Color.Black), pagainstX, pagainstY);
我的要求是在表格ie中有两个文本框,用于说明新绘制标签的X和Y坐标。如果用户更改文本框中的值,则必须根据文本框中给定的值更改标签的位置。在文本框leaveevent中,我编写了如下代码。但它不起作用。实现这一目标的正确方法是什么

private void txtpaX_Leave(object sender, EventArgs e)
    {
        if (flag != 0)
        {
            Graphics gs = Graphics.FromImage(pictureBox1.Image);
            Font font = new Font("Courier New", 6);
            payagainst = "PARADISE TRADING, CONT &  REAL ESTATE";
            amount = 3300;
            gs.DrawString(payagainst, font, new SolidBrush(Color.Black), float.Parse(txtpaX.Text), float.Parse(txtpaY.Text));
            flag = 1;
        }
    }

任何帮助都将不胜感激

在图像上打印字符串后会发生什么

您是否需要保存图像或将其传递给他人,或者
PictureBox
中的显示是唯一的目的

对于后一种情况,这是一种方法:

只要
文本框
发生更改或离开时,
图片框
无效,您就可以将图形代码仅放置在
绘制
事件中并调用它

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
    e.Graphics.DrawString(yourText, yourFont, yourBrush, 
                          float.Parse(textBox1.Text), float.Parse(textBox2.Text));
}

// this will show up only after leaving the textbox:
private void textBox_Leave(object sender, EventArgs e)
{
    pictureBox1.Invalidate();
}

// this will provide a live change:
private void textBox_TextChanged(object sender, EventArgs e)
{
    pictureBox1.Invalidate();
}
请注意,您应该将此代码与两个文本框挂钩

此代码将保留图形,但不会更改实际位图。我想在你知道文本应该放在哪里之前,这是没有意义的

如果要更改实际图像,可以按如下方式执行:

private void stampButton_Click(object sender, EventArgs e)
{
    using (Graphics G = Graphics.FromImage(pictureBox1.Image))
        G.DrawString(yourText, yourFont, yourBrush, 
                     float.Parse(textBox1.Text), float.Parse(textBox2.Text));
}
private void saveButton_Click(object sender, EventArgs e)
{
    pictureBox1.Image.Save("yourfilename", System.Drawing.Imaging.ImageFormat.yourfileformat);
}
…然后可能会这样保存它:

private void stampButton_Click(object sender, EventArgs e)
{
    using (Graphics G = Graphics.FromImage(pictureBox1.Image))
        G.DrawString(yourText, yourFont, yourBrush, 
                     float.Parse(textBox1.Text), float.Parse(textBox2.Text));
}
private void saveButton_Click(object sender, EventArgs e)
{
    pictureBox1.Image.Save("yourfilename", System.Drawing.Imaging.ImageFormat.yourfileformat);
}

描述症状或给出错误消息,这样我们就知道什么不起作用了。请查看我给@Leo Answer的评论您解决问题了吗?