Пользователь разместил текст на картинке в c # - PullRequest
2 голосов
/ 05 ноября 2010

Я пытаюсь создать инструмент, который позволит мне выбрать определенное место в графическом окне для размещения текста из текстового поля.Он должен быть в состоянии поместить несколько разных текстов в поле для картинок, а затем удастся удалить.Это мой текущий код:

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

В данный момент я могу ввести текст в текстовое поле, но не могу нарисовать строку в графическом окне и выбрать его местоположение.У меня есть кнопка, которая предназначена для подтверждения правильности написанного текста, а затем позволяет пользователю выбрать его местоположение.Кто-нибудь может помочь мне разобраться с этим кодом?

Спасибо ...

1 Ответ

4 голосов
/ 05 ноября 2010

Свойство MousePosition относится к экрану, а не PictureBox.

Вы должны обработать событие MouseClick и нарисовать строку в e.X и e.Y.
Кроме того, вы можете вызвать pictureBox1.PointToClient для преобразования экранных координат в управляющие относительные координаты.

Кроме того, вы должны располагать объект Graphics в операторе using.

Наконец, я почти уверен, что вам нужно будет позвонить pictureBox1.Invalidate() после изменения изображения, чтобы заставить его перерисовать.

...