C#图像处理非常慢

Ome*_*chy 1 c# processing image winforms

在过去的几个月里,我一直致力于一个应用程序,其中一个功能是它可以裁剪图像.所以,我编写了一个绘制透明橙色矩形的函数,向用户显示裁剪区域,但它的工作速度非常慢 - 任何人都可以帮我/给我一个让它更快的方法吗?

这是代码:

Image source;

private void pictureBox1_MouseDown(object sender, MouseEventArgs e) {
    mousePos = e.Location;
}

Point mousePos;

private void pictureBox1_MouseMove(object sender, MouseEventArgs e) {
    if (e.Button == MouseButtons.Left) {
        Image editSource = new Bitmap(source);
        Graphics g = Graphics.FromImage(editSource);
        SolidBrush brush = new SolidBrush(
            Color.FromArgb(128, Color.Orange.R, Color.Orange.G, Color.Orange.B));

        int width = e.X - mousePos.X;
        if (width < 0) {
            width *= -1;
        }

        int height = e.Y - mousePos.Y;
        if (height < 0) {
            height *= -1;
        }

        Size cropRectSize = new Size(width, height);
        Rectangle cropRect = new Rectangle(mousePos, cropRectSize);
        g.FillRectangle(brush, cropRect);
        pictureBox1.Image = editSource;
    }
}
Run Code Online (Sandbox Code Playgroud)

Jud*_*ngo 5

使其更快的方法是不要在鼠标移动时创建位图.如果需要在图形表面上绘图,请执行此操作而不创建新的位图.