[英]C# Moving PictureBox over other PictureBoxes with transparent background
我的目标是制作跳棋游戏,用户可以在其中移动跳棋。
我制作的板来自DataGridView类。
现在,我正在为具有透明背景的每个检查器创建图片框,并且当用户移动选定的检查器时,我将其设置为BringToFront。
问题在于“透明”效果实际上是相对于父控件而言的,所有检查器的父元素都是DataGridView。
因此,结果是当2个棋子重叠时,没有透明效果。
我有一些解决方案,但它占用大量内存,即使在UI线程中没有的线程上,所有冻结。
我的解决方案是要有一个大面板(所有检查器的父级),其背景是客户端屏幕快照的构建,并在移动检查器时进行更改。
做这样的事情的正确方法是什么? 我一直在寻找并尝试通过系泊设备在网上找到解决方案):请帮助!
编辑:
差不多完成了:
如果您要使用图片,则不会使用透明度。 在每个应用程序中,透明度都较慢。
让我们思考一下替代解决方案。 一个正方形可以有多少个州? 原色正方形可以为空,或者顶部为红色或黑色。 备用彩色正方形永远不会有碎片。
总共有4个州。 因此可以在Spritesheet上分离或组合4张图像。 然后,您只需要根据图片的状态切换图片即可。 主色为空,主色为红色,主色为黑色或其他彩色正方形。
如果您想要精美的边框,则可以逐个构建图像,以在其后面或旁边使用图像。
因此,如果将来有人需要此问题的帮助。
想法是在所有其他面板(游戏板和检查器)上拥有另一个控制面板。
然后,每次我们想要移动一个检查器时,我们都会从游戏板上截取一个屏幕截图,而无需移动该检查器,并将此屏幕截图作为最顶部面板的图像。
现在我们将移动检查器的父级更改为最上面的面板,现在我们将检查器移动到具有透明背景的该面板上。
(:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.