我用窗体的Paint事件绘制了一个图形,但是想让它移动,不想把画的图放在pictureBox1里或者其它的容器里移动,不知道代码怎么写,希望能帮我解决下?
如果用Paint事件绘制的图片不能移动,那么希望能给段代码,能让自己绘制的图片移动的?谢谢!

解决方案 »

  1.   

    你要在FORM.MOUSEDOWN事件中调用一个事件,当然这个事件是你自己来写的,就是HitTest,也就是通过鼠标点下的坐标来获得当前的绘制控件(具体的方法就是要在绘制的时候给这个图形定义一个区域,鼠标点下的位置要和这个区域比较,如果在这个区域里,那么你要引发重绘动作,让这个图形好象被"选中"),然后还要在mousemove,mouseleave等事件中再次设置这个图形的区域,并且引发重绘动作.大概就是这个思路了.
      

  2.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;namespace play
    {
        public partial class Form1 : Form
        {
            int x;
            int y;        public Form1()
            {
                InitializeComponent();
            }        protected override void OnPaint(PaintEventArgs e)
            {
                Graphics g = e.Graphics;
                Image img = new Bitmap(@"E:\VsProject\play\x1.gif");
                g.DrawImageUnscaled(img, x, y);
            }
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                x = e.X;
                y = e.Y;
                this.Refresh();
            }
        }
    }
    记得在消息中启用Form1_MouseMove
    并在E:\VsProject\play\x1.gif 有这个gif文件
      

  3.   

    哦,了解了谢谢啊,不过能不能在给我个不用Form1_MouseMove这个事件的代码,而是用keydown这个事件的代码?