// 三個循環構建三處障礙物,代碼略...
用 Image 控件承載:
Image Mask1 = new Image(), Mask2 = new Image();
private void InitMask() {
Mask1.Width = 238; Mask1.Height = 244;
Mask1.Source = new BitmapImage(new Uri(@"Map\Mask1.png", UriKind.Relative));
Mask1.Opacity = 0.7;
Carrier.Children.Add(Mask1);
Canvas.SetZIndex(Mask1, 10000);
Canvas.SetLeft(Mask1, 185); Canvas.SetTop(Mask1, 220);
Mask2.Width = 198; Mask2.Height = 221;
Mask2.Source = new BitmapImage(new Uri(@"Map\Mask2.png", UriKind.Relative));
Mask2.Opacity = 0.7;
Carrier.Children.Add(Mask2);
Canvas.SetZIndex(Mask2, 10000);
Canvas.SetLeft(Mask2, 466); Canvas.SetTop(Mask2, 11);
}
Opacity=0.7:角色置身樹下若隱若現,模擬真實 MMORPG 效果。
ZIndex=10000:畫家算法(近物遮遠物),WPF 中動態更新 ZIndex = Y座標 即可實現。遮罩層 ZIndex 需足夠大,防止任意物體 Y 值超過導致顯示 Bug。
運行測試效果圖。