[英]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.