простая задача перемещения после курсора c # winforms - PullRequest
1 голос
/ 17 октября 2010

У меня есть приложение winform, и когда я нажимаю на кнопку, я хочу, чтобы текстовый текст двигался после моего курсора.Я написал некоторый код, но он не работает.пожалуйста помоги !

Вот код:

 private void corectionBrushToolStripMenuItem_Click(object sender, EventArgs e)
    {

        this.MouseMove += new MouseEventHandler(On_MouseMove);
        this.Paint += new PaintEventHandler(DrawRect); 
    }

    private void DrawRect(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;
        g.DrawString("da",Font,Brushes.Black,new Point(mouseMoveX,mouseMoveY));

    }

    public void On_MouseMove(object sender, MouseEventArgs mouseEv)
    {
        mouseMoveX = mouseEv.X;
        mouseMoveY = mouseEv.Y;

        this.Invalidate();


    }

С уважением, Алекс Бадеску

Ответы [ 2 ]

0 голосов
/ 17 октября 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 winap
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private bool DrawText = false;

        private void button1_Click(object sender, EventArgs e)
        {
            DrawText = !DrawText;
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {

            if(DrawText)
            {
                if (lp != p)
                {
                    this.Invalidate();
                }

                e.Graphics.DrawString("hi", SystemFonts.DefaultFont, Brushes.Green, p);
                lp = p; 
            }

        }

        private PointF p;
        private PointF lp;
        private void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            p = new PointF(e.X -10, e.Y);
            this.Invalidate();
        }
    }
}
0 голосов
/ 17 октября 2010

Как насчет:

Добавьте нужный текст в элемент управления меткой и измените положение в MouseMove.

Работает нормально:

int mX = 0;
int mY = 0;
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    mX = e.X;
    mY = e.Y;
    this.Invalidate();
}

Random rr = new Random(123123);

private void Form1_Paint(object sender, PaintEventArgs e)
{
    Graphics g = e.Graphics;
    g.DrawString("This a test"+rr.Next().ToString(), Font, Brushes.Black, new Point(mX, mY));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...