2

我正在尝试制作一个工具,允许我选择图片框上的某个位置来放置文本框中的文本。它需要能够在图片框上放置多个不同的文本,然后才能被删除。这是我当前的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace TextboxTool
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height);
        }

        private void textBox1_MouseClick(object sender, MouseEventArgs e)
        {
            textBox1.Text = "";
        }

        private void button1_Click(object sender, EventArgs e)
        {
            textBox1.Visible = true;
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            Graphics G = Graphics.FromImage(pictureBox1.Image);
            G.DrawString(textBox1.Text, new Font("Tahoma", 40), Brushes.Black, new Point(MousePosition.X, MousePosition.Y));
        }
    }
}

目前我可以在文本框中输入文本,但无法在图片框上绘制字符串并选择其位置。我有一个按钮,用于确认写入的文本是否正确,然后允许用户选择其位置。请有人可以帮我整理一下这段代码吗?

谢谢-

4

1 回答 1

4

MousePosition属性是相对于屏幕的,而不是相对于PictureBox.

您应该处理该事件并在和MouseClick处绘制字符串。 或者,您可以调用将屏幕坐标转换为控件相对坐标。e.Xe.Y
pictureBox1.PointToClient

此外,您应该在语句中处理该Graphics对象。using

最后,我很确定您需要pictureBox1.Invalidate()在修改图像后调用以强制它重新绘制。

于 2010-11-05T14:18:38.417 回答