C# 将 PictureBox 移动到具有透明背景的其他 PictureBox 上

C# Moving PictureBox over other PictureBoxes with transparent background

我的目标是制作跳棋游戏,用户可以在棋盘上移动跳棋。

我做的板子来自DataGridView class .

现在我正在做的是为每个具有透明背景的棋子创建图片框,当用户移动选定的棋子时,我正在给他设置 BringToFront。

问题是"transparent"效果其实是相对父控件而言的,所有跳棋的父控件都是DataGridView

所以结果是当有2个跳棋重叠时没有透明效果。

Example of my problem image

我有一些解决方案,但它占用大量内存,即使在不在 UI 线程中的线程上也会全部冻结。

我的解决方案是拥有一个大面板(所有跳棋的父级),其背景是客户端屏幕截图的构建,并在移动跳棋时发生变化。

这样做的正确方法是什么?我正在系泊处在网上寻找并尝试解决方案):请帮忙!

编辑:

快完成了:

https://youtu.be/nyhfIOzqeY8

如果您要使用图片,我不会使用透明度。每个应用程序的透明度都较慢。

让我们考虑一下替代解决方案。一个正方形可以有多少种状态?原色方块可以是空的,也可以在顶部有一个红色或黑色的方块。备用彩色方块上从来没有一块。

那一共是4个州。所以 4 个图像可以在 spritesheet 上分开或组合。然后你只需要根据它的状态切换图片。主色为空,主色为红色,主色为黑色,或其他彩色方块。

如果你想要一个花哨的边框,你可以在后面或旁边使用图像,如果你一块一块地构建它的话。

所以如果以后有人需要帮助解决这个问题。

想法是在所有其他面板(游戏板和跳棋)上设置另一个控制面板。

然后每次我们想要移动一个棋子时,我们从没有移动棋子的游戏板上截取一个屏幕截图,并将这个屏幕截图作为最上面面板的图像。

现在我们将移动方格的父级更改为最上面的面板,现在我们将方格移动到这个具有透明背景的面板上。

https://youtu.be/PUEyZPhPTlc

(: