Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.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/6/cplusplus/137.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#图像覆盖另一图像_C#_Winforms_Image - Fatal编程技术网

C#图像覆盖另一图像

C#图像覆盖另一图像,c#,winforms,image,C#,Winforms,Image,我有一个由程序生成的带有固定大小图像(256x256)的picturebox。我有另一个较小的图像作为资源。我想做的是当我的光标在图像上时,我按住鼠标按钮,较小的图像用鼠标指针“锚定”,这样它就可以移动了。如果我松开鼠标按钮,较小的图像将停留在较大图像顶部的该位置。较小的图像基本上是一个标记,类似于X或O 我想在第一个图片盒的上面再放一个图片盒,但我不能让它透明。或者用上面较小的图像重新绘制图像,然后将图像重新加载到picturebox中,但我不知道该怎么做,我认为每次移动鼠标时,重新绘制图像的

我有一个由程序生成的带有固定大小图像(256x256)的picturebox。我有另一个较小的图像作为资源。我想做的是当我的光标在图像上时,我按住鼠标按钮,较小的图像用鼠标指针“锚定”,这样它就可以移动了。如果我松开鼠标按钮,较小的图像将停留在较大图像顶部的该位置。较小的图像基本上是一个标记,类似于X或O

我想在第一个图片盒的上面再放一个图片盒,但我不能让它透明。或者用上面较小的图像重新绘制图像,然后将图像重新加载到picturebox中,但我不知道该怎么做,我认为每次移动鼠标时,重新绘制图像的速度会非常慢


那么,如何让标记图像在较大图像的上方移动并保持在那里呢?

为此创建控件,而不是使用
PictureBox
。PictureBox只能用于表单上的固定图像,而不能用于其他图像

相反,从
UserControl
派生控件。为它启用双缓冲。在
OnPaint
方法中,首先绘制背景图片,然后绘制标记图片。别担心,它不会慢,它会正常工作

释放鼠标时,通过在其上绘制标记图片来更新背景图片


由于这里的每一句话本身都是一个小小的发现,希望您能在编写您的小游戏时玩得开心:)

我担心有这种自定义解决方案,您应该避免使用standart控件,并使用自己的绘图风格实现自己的。