Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#在picturebox上绘图,而不是持久性的_C#_Bitmap_Paint_Picturebox - Fatal编程技术网

C#在picturebox上绘图,而不是持久性的

C#在picturebox上绘图,而不是持久性的,c#,bitmap,paint,picturebox,C#,Bitmap,Paint,Picturebox,我有一个列表对象“imagelist”,它包含许多图像的路径,比如.png。现在,使用以下代码: private void paint_picture(PictureBox picture, string pathofpic) { Graphics g = picture.CreateGraphics(); Bitmap drawnpic = null; if (imagelist.ContainsKey(picture.Name))

我有一个列表对象“imagelist”,它包含许多图像的路径,比如.png。现在,使用以下代码:

private void paint_picture(PictureBox picture, string pathofpic)
    {
        Graphics g = picture.CreateGraphics();
        Bitmap drawnpic = null;
        if (imagelist.ContainsKey(picture.Name))
        {
            drawnpic = new Bitmap(pathofpic);
            g.DrawImage(drawnpic, 0, 0, picture.Size.Width, picture.Size.Height);
            imagelist[picture.Name] = pathofpic;
        }
        drawnpic.Dispose();
        g.Dispose();
    }
每次更改卡片的图像时,我都会调用此选项,但当我将图片框拖到表单上(例如,拖到其他图片框上)时,我似乎无法使图像保留在图片框上。点击和拖动代码只是用鼠标移动picturebox,并不真正相关

我尝试在取消选择图像时使表单无效,但它没有任何作用

有什么我遗漏的吗?在下面的屏幕截图中,我在表单周围拖动了一个图像,它覆盖了移动的其他图像:


这就是绘画的工作原理–你必须处理它的
Paint
事件,并在每次需要重新绘画时保持绘制相同的东西

您可以在原始图像上绘制:

Bitmap b = new Bitmap(picture.Image);

using (Graphics g = Graphics.FromImage(b)) {
    using (Bitmap drawnpic = new Bitmap(pathofpic)) {
        g.DrawImage(drawnpic, 0, 0, b.Width, b.Height);
    }
}

picture.Image = b;
然后将原始图像保存到某个位置,并可能使用它来代替
新建位图
行中的
picture.image


方法名称请参见
PascalCase
。)

这就是绘画的工作原理–你必须处理它的
Paint
事件,并在每次需要重新绘画时继续绘制相同的东西

您可以在原始图像上绘制:

Bitmap b = new Bitmap(picture.Image);

using (Graphics g = Graphics.FromImage(b)) {
    using (Bitmap drawnpic = new Bitmap(pathofpic)) {
        g.DrawImage(drawnpic, 0, 0, b.Width, b.Height);
    }
}

picture.Image = b;
然后将原始图像保存到某个位置,并可能使用它来代替
新建位图
行中的
picture.image


方法名称请参见
PascalCase
。)

这就是绘画的工作原理–你必须处理它的
Paint
事件,并在每次需要重新绘画时继续绘制相同的东西

您可以在原始图像上绘制:

Bitmap b = new Bitmap(picture.Image);

using (Graphics g = Graphics.FromImage(b)) {
    using (Bitmap drawnpic = new Bitmap(pathofpic)) {
        g.DrawImage(drawnpic, 0, 0, b.Width, b.Height);
    }
}

picture.Image = b;
然后将原始图像保存到某个位置,并可能使用它来代替
新建位图
行中的
picture.image


方法名称请参见
PascalCase
。)

这就是绘画的工作原理–你必须处理它的
Paint
事件,并在每次需要重新绘画时继续绘制相同的东西

您可以在原始图像上绘制:

Bitmap b = new Bitmap(picture.Image);

using (Graphics g = Graphics.FromImage(b)) {
    using (Bitmap drawnpic = new Bitmap(pathofpic)) {
        g.DrawImage(drawnpic, 0, 0, b.Width, b.Height);
    }
}

picture.Image = b;
然后将原始图像保存到某个位置,并可能使用它来代替
新建位图
行中的
picture.image


方法名称请参见
PascalCase
。)

我不能使用picturebox的image或backgroundimage属性,因为它占用了太多内存-我需要将一个图像绘制到一个空的picturebox,并以某种方式使其保持持久性。这不可能吗?@Codefun64:不,不可能。你必须把它放在某个地方。另外,你的图片是否比图片框大很多?有一点,但这不是我担心内存使用的原因。我正在创建数千个picturebox,我需要一种方法来显示其中的图像(可能是所有唯一的图像,与我原来的问题中显示的图像不同),并使它们保持不变。我无法使用picturebox的图像或背景图像属性,因为它占用了太多的内存——我需要在一个空的picturebox中绘制一个图像,并让它以某种方式保持持久性。这不可能吗?@Codefun64:不,不可能。你必须把它放在某个地方。另外,你的图片是否比图片框大很多?有一点,但这不是我担心内存使用的原因。我正在创建数千个picturebox,我需要一种方法来显示其中的图像(可能是所有唯一的图像,与我原来的问题中显示的图像不同),并使它们保持不变。我无法使用picturebox的图像或背景图像属性,因为它占用了太多的内存——我需要在一个空的picturebox中绘制一个图像,并让它以某种方式保持持久性。这不可能吗?@Codefun64:不,不可能。你必须把它放在某个地方。另外,你的图片是否比图片框大很多?有一点,但这不是我担心内存使用的原因。我正在创建数千个picturebox,我需要一种方法来显示其中的图像(可能是所有唯一的图像,与我原来的问题中显示的图像不同),并使它们保持不变。我无法使用picturebox的图像或背景图像属性,因为它占用了太多的内存——我需要在一个空的picturebox中绘制一个图像,并让它以某种方式保持持久性。这不可能吗?@Codefun64:不,不可能。你必须把它放在某个地方。另外,你的图片是否比图片框大很多?有一点,但这不是我担心内存使用的原因。我正在创建数千个PictureBox,我需要一种方法来显示其中的图像(可能是所有独特的图像,与我最初的问题中显示的图像不同),并使它们保持持久性。