日期:2014-05-18  浏览次数:20986 次

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

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