首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Winform PictureBox之间复制图片有关问题

2013-12-28 
Winform PictureBox之间复制图片问题最近要做一个小程序,需要在2个PictureBox(picLeft,picRight)间传递背

Winform PictureBox之间复制图片问题
最近要做一个小程序,需要在2个PictureBox(picLeft,picRight)间传递背景图片,小弟试着写了一个,但是没能实现复制效果,顺带一提,picLeft是直接在属性里面设置的BackgroundImage(原本为png格式图片)。小弟把代码放上来让各位大神看看应该怎么修改。先谢谢各位大神了。


        public Form1()
        {
            InitializeComponent();
            picLeft.AllowDrop = true;
            picRight.AllowDrop = true;
        }
//左边PictureBox鼠标按下时激发操作
        private void picLeft_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Left)
            {
                PictureBox pic = (PictureBox)(sender);
                if (pic.BackgroundImage != null)
                {
                    pic.DoDragDrop(pic.BackgroundImage , DragDropEffects.Copy);//拖放操作
                }
            }
        }
        private void picRight_DragEnter(object sender, DragEventArgs e)
        {
            // 检查该图片是否适用于目标控件。如果不适用,则拒绝放置图片。
            if (e.Data.GetDataPresent(DataFormats.Bitmap))
            {
                    e.Effect = DragDropEffects.Copy;//执行复制操作
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }

[解决办法]
你的代码的copy只是让拖动的过程鼠标有一个+号,而没有拷贝图片的实质逻辑。

如果你是浅拷贝,需要在拖放完成加上
pic2.image = pic1.image

深拷贝你需要将图片再绘制一份。
[解决办法]
本帖最后由 bdmh 于 2013-12-27 08:41:33 编辑

        private void picRight_DragDrop(object sender, DragEventArgs e)
        {
            picRight.BackgroundImage = (Image)e.Data.GetData(DataFormats.Bitmap);
        }

[解决办法]
只有拖拽的操作,没有图片的操作

热点排行