c#编程,如何实现拖动一个图片在picturebox中打开

2022-05-08 教育 131阅读
privatevoidpictureBox1_DragOver(objectsender,DragEventArgse)
{
if((e.AllowedEffect&DragDropEffects.Link)==DragDropEffects.Link)
{
e.Effect=DragDropEffects.Link;
}
}

privatevoidpictureBox1_DragDrop(objectsender,DragEventArgse)
{
string[]items=(object)e.Data.GetData("FileNameW")asstring[];
if(items.Length==1)
{
System.Drawing.Imageimg=System.Drawing.Image.FromFile(items[0]);
this.pictureBox1.Image=img;
}
}

在窗体构造函数或者是Load事件里写下面三行
this.pictureBox1.DragOver+=newDragEventHandler(pictureBox1_DragOver);
this.pictureBox1.DragDrop+=newDragEventHandler(pictureBox1_DragDrop);
this.pictureBox1.AllowDrop=true;

代码已经经过测试,没有问题

PictureBox的AllowDrop属性确实感知不出来,但是PictureBox类中含有对这个属性的定义,你可以GoToDefinition看一下
你这样写是不会出问题的,因为这个属性在定义的地方加了两个Attribute:
//Summary:
//OverridestheSystem.Windows.Forms.Control.AllowDropproperty.
[EditorBrowsable(1)]
[Browsable(false)]
publicoverrideboolAllowDrop{get;set;}
它们规定这个属性是否可见,详情可以查询MSDN

还要谢谢楼主啊,我是好久之前遇到这个情况了,当时没查出来,今天你这么一提查出来了,长了点知识,多谢多谢!

----------------------------------------------
你是想做个画图板了....
voidpictureBox1_MouseUp(objectsender,MouseEventArgse)
{
if(e.Button==MouseButtons.Left)
{
p2=newPoint(e.X,e.Y);
Rectanglerec=newRectangle();
Graphicsg1=this.pictureBox1.CreateGraphics();
g1.DrawRectangle(newPen(Brushes.Black),newRectangle(p1,newSize(p2.X-p1.X,p2.Y-p1.Y)));
}
}

voidpictureBox1_MouseDown(objectsender,MouseEventArgse)
{
if(e.Button==MouseButtons.Left)
{
p1=newPoint(e.X,e.Y);
}
}

p1,p2是两个Point类型的类成员,这个无所谓,你声明一个Rectangle的也可以。
怎么注册事件就不用我教了吧。
这个是画方形,其他图形也可以画,那就是需要设置一个标志位,记录鼠标当前状态,然后画的时候判断和计算就可以了。具体代码我不写了

yloverong:thx~!没关系的,这个分也不能打粮食吃~没啥。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com