gpt4 book ai didi

c# - PictureBox onPaint 清除每个控件

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:23 27 4
gpt4 key购买 nike

我一直在使用 pictureBox 的 onPaint 事件处理程序时遇到问题。我已经简化了代码,所以现在我正试图实现这一点:将位图从路径加载到 pictureBox1 中,并在鼠标光标移过 pictureBox1 时在鼠标光标周围绘制一个小矩形。

    private int mouseX;
private int mouseY;
private String path;

public Form1()
{
InitializeComponent();
path = "images\\image.jpg";
}

private void Form1_Load(object sender, EventArgs e)
{
pictureBox1.Image = new Bitmap(path);
}

private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
mouseX = e.X;
mouseY = e.Y;
}

private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawRectangle(Pens.Black, mouseX - 10, mouseY - 10, 20, 20);
pictureBox1.Invalidate();
}

当我运行该应用程序时,位图已成功加载,并且在我拖动鼠标的任何地方都可以很好地绘制矩形。无论如何有两个问题:

1) 当窗体被加载时,除了 pictureBox 之外的所有东西都是白色的,直到我将窗口移到某个地方。这意味着 menuStrip,toolStrip 例如被白色清除。当我添加 pictureBox.Invalidate();进入 Form1_Load 它似乎解决了这个问题(一切都已加载且可见)但在 toolStrip 上有一些按钮和组合框正在交互,改变了它的可见性,这仍然会导致问题。我想仅在 pictureBox 上减少 Paint 的功能。

2) 尽管鼠标光标未进入 pictureBox,但在加载窗体时绘制矩形。此外,当光标离开 pictureBox 时,最后绘制的矩形会保留在那里。我已尝试将其删除,但无法弄清楚。

感谢您的任何建议,在我看来,那里缺少一些基本的东西,但不知道是什么。

最佳答案

2) MouseMove 仅在光标位于图片框上时有效。尝试使用 MouseEnterMouseLeave 来处理何时开始绘制矩形以及何时停止绘制矩形。

关于c# - PictureBox onPaint 清除每个控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14979197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com