簡體   English   中英

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

[英]C# Moving PictureBox over other PictureBoxes with transparent background

我的目標是制作跳棋游戲,用戶可以在其中移動跳棋。

我制作的板來自DataGridView類。

現在,我正在為具有透明背景的每個檢查器創建圖片框,並且當用戶移動選定的檢查器時,我將其設置為BringToFront。

問題在於“透明”效果實際上是相對於父控件而言的,所有檢查器的父元素都是DataGridView。

因此,結果是當2個棋子重疊時,沒有透明效果。

我的問題圖片示例

我有一些解決方案,但它占用大量內存,即使在UI線程中沒有的線程上,所有凍結。

我的解決方案是要有一個大面板(所有檢查器的父級),其背景是客戶端屏幕快照的構建,並在移動檢查器時進行更改。

做這樣的事情的正確方法是什么? 我一直在尋找並嘗試通過系泊設備在網上找到解決方案):請幫助!

編輯:

差不多完成了:

https://youtu.be/nyhfIOzqeY8

如果您要使用圖片,則不會使用透明度。 在每個應用程序中,透明度都較慢。

讓我們思考一下替代解決方案。 一個正方形可以有多少個州? 原色正方形可以為空,或者頂部為紅色或黑色。 備用彩色正方形永遠不會有碎片。

總共有4個州。 因此可以在Spritesheet上分離或組合4張圖像。 然后,您只需要根據圖片的狀態切換圖片即可。 主色為空,主色為紅色,主色為黑色或其他彩色正方形。

如果您想要精美的邊框,則可以逐個構建圖像,以在其后面或旁邊使用圖像。

因此,如果將來有人需要此問題的幫助。

想法是在所有其他面板(游戲板和檢查器)上擁有另一個控制面板。

然后,每次我們想要移動一個檢查器時,我們都會從游戲板上截取一個屏幕截圖,而無需移動該檢查器,並將此屏幕截圖作為最頂部面板的圖像。

現在我們將移動檢查器的父級更改為最上面的面板,現在我們將檢查器移動到具有透明背景的該面板上。

https://youtu.be/PUEyZPhPTlc

(:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM