簡體   English   中英

用戶更改坐標值時如何更改束帶位置

[英]how to change the drawstring position when the user changes the coordinates values

我打算在圖片框上寫一些東西。在頁面加載事件中,我能夠做到這一點。

 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);

我的要求是表單中有兩個文本框,即要提到新繪制的標簽的X和Y坐標。 如果用戶更改了標簽,則必須根據文本框中提供的值更改標簽文本框中的值。 在文本框離開事件中,我編寫了如下代碼。 但它不起作用。 什么是實現此目標的正確方法。

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的顯示是唯一的目的?

對於后一種情況,這是這樣做的方法:

只要將TextBoxes進行更改或將其保留,就可以通過使PictureBox無效來將繪圖代碼僅放置在Paint事件中並調用它。

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();
}

請注意,您應該將此代碼與兩個 TextBoxes掛鈎!

此代碼將保留圖形,但不會更改實際的位圖。 我想這直到你確切知道文本應該去的地方才有意義。

如果您想更改實際的圖像,可以這樣操作:

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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM