【问题标题】:Create a method that when I click on a picturebox it allows you to drag a clone image that the mouse can drag around the form? [closed]创建一个方法,当我单击图片框时,它允许您拖动鼠标可以在表单周围拖动的克隆图像? [关闭]
【发布时间】:2015-04-21 16:05:57
【问题描述】:
    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        Graphics gs = this.CreateGraphics();
        Bitmap bimage = new Bitmap(pictureBox1.Image);
        Rectangle rect = new Rectangle(e.X, e.Y, 200, 200);
        TextureBrush tb = new TextureBrush(bimage);
        gs.FillRectangle(tb, rect);

当我试图拖动它时,我没有让图像移动,这与我认为的 mousedown 方法有关 我本质上想要: 能够点击 在我创建的图像中拖动矩形 然后当释放左键使图像消失时

【问题讨论】:

  • 您能否为您的问题添加一些实质内容并向我们展示您的尝试?
  • 请向我们提供您的问题的背景信息,并向我们展示一个小代码示例,展示您最近的尝试以及它出了什么问题。还可以考虑访问此网站的帮助中心,了解我们期望的问题格式/详细信息。
  • 我最好有一些类似于 Google 主页的内容,您可以在其中单击图像,然后在屏幕上拖动一个微弱/半透明的克隆
  • 我已经添加了到目前为止的内容,你基本上可以看到我正在创建一个包含图像的矩形,它跟随鼠标,但我无法得到它,所以当你鼠标左键单击并拖动它会移动,松开后消失
  • 您需要创建一些可以实际拖动的控件。但是,如果“微弱”意味着半透明,那必须是另一种形式! ——

标签: c# visual-studio visual-studio-2012


【解决方案1】:

这是一个例子。它使用包含PictureBoxImageForm

    Form form2 = new Form();
    Point mdown = Point.Empty;

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        mdown = e.Location;
        form2.BackgroundImage = pictureBox1.Image;
        form2.Opacity = 0.5f;
        form2.MaximizeBox = false;
        form2.ControlBox = false;
        form2.Text = "";
        form2.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        form2.Size = pictureBox1.Image.Size;
        form2.Show();
        Point pt = pictureBox1.PointToScreen(pictureBox1.Location);
        form2.Location = pt;
    }

    private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            form2.Location = pictureBox1.PointToScreen(
                       new Point(e.X -mdown.X, e.Y - mdown.Y ));
        }
    }

    private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
    {
        form2.Hide();
    }

【讨论】:

  • 这太棒了!!!但是,图像相对于鼠标的位置取决于我单击以拖动图像的位置,有没有办法将图像/表单集中到鼠标上?
  • 不用担心找到它,把鼠标移动方法改成这个 if (e.Button == System.Windows.Forms.MouseButtons.Left) { Point pt = pictureBox1.PointToScreen(new Point( -(form2.Width/2) + eX, -(form2.Height/2) + eY)); form2.Location = pt; }
猜你喜欢
  • 1970-01-01
  • 2015-06-29
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多