/// <summary> /// 为主窗体描绘一个选择支 /// </summary> /// <param name="sbutton">按钮实例</param> /// <param name="descriptor">按钮描述子</param> private void DrawBranchButton(BranchButton bbutton, BranchButtonDescriptor descriptor) { TextBlock buttonTextView = new TextBlock(); BitmapImage bmp = bbutton.ImageNormal.SpriteBitmapImage; buttonTextView.Width = bmp.PixelWidth; buttonTextView.Height = bmp.PixelHeight; ImageBrush ib = new ImageBrush(bmp); ib.AlignmentX = AlignmentX.Left; ib.AlignmentY = AlignmentY.Top; ib.TileMode = TileMode.None; ib.Stretch = Stretch.Fill; buttonTextView.FontSize = GlobalDataContainer.GAME_BRANCH_FONTSIZE; buttonTextView.Foreground = new SolidColorBrush(GlobalDataContainer.GAME_BRANCH_FONTCOLOR); buttonTextView.FontFamily = new FontFamily(GlobalDataContainer.GAME_BRANCH_FONTNAME); buttonTextView.TextAlignment = TextAlignment.Center; buttonTextView.Padding = new Thickness(0, GlobalDataContainer.GAME_BRANCH_TOPPAD, 0, 0); buttonTextView.Background = ib; bbutton.DisplayBinding = buttonTextView; bbutton.Eternal = false; bbutton.Enable = true; bbutton.Text = descriptor.Text; bbutton.Ntr = new Interrupt() { detail = "BranchButtonNTRInterrupt", interruptSA = null, type = InterruptType.ButtonJump, returnTarget = descriptor.JumpTarget, exitWait = true }; Canvas.SetLeft(buttonTextView, descriptor.X); Canvas.SetTop(buttonTextView, descriptor.Y); Canvas.SetZIndex(buttonTextView, descriptor.Z); buttonTextView.Visibility = Visibility.Visible; buttonTextView.MouseDown += bbutton.MouseOnHandler; buttonTextView.MouseEnter += bbutton.MouseEnterHandler; buttonTextView.MouseLeave += bbutton.MouseLeaveHandler; buttonTextView.MouseUp += bbutton.MouseUpHandler; this.view.BO_MainGrid.Children.Add(buttonTextView); bbutton.InitAnimationRenderTransform(); }
/// <summary> /// 重绘选择支 /// </summary> /// <param name="id">选择支id</param> /// <param name="descriptor">选择支描述子</param> private void ReDrawBranchButton(int id, BranchButtonDescriptor descriptor) { // 不需要重绘的情况 if (descriptor == null) { return; } BranchButton oldButton = this.branchButtonVec[id]; BranchButton sbutton = new BranchButton(id); sbutton.ImageNormal = descriptor.NormalDescriptor == null ? null : ResourceManager.GetInstance().GetPicture(descriptor.NormalDescriptor.ResourceName, new Int32Rect(-1, 0, 0, 0)); sbutton.ImageMouseOver = descriptor.OverDescriptor == null ? null : ResourceManager.GetInstance().GetPicture(descriptor.OverDescriptor.ResourceName, new Int32Rect(-1, 0, 0, 0)); sbutton.ImageMouseOn = descriptor.OnDescriptor == null ? null : ResourceManager.GetInstance().GetPicture(descriptor.OnDescriptor.ResourceName, new Int32Rect(-1, 0, 0, 0)); this.branchButtonVec[id] = sbutton; // 重绘 this.RemoveBranchButton(oldButton); this.DrawBranchButton(sbutton, descriptor); }
/// <summary> /// 为屏幕增加一个选择支描述子 /// </summary> /// <param name="id">选择支按钮id</param> /// <param name="X">左上角在画面的X坐标</param> /// <param name="Y">左上角在画面的Y坐标</param> /// <param name="jumpTarget">按下后要跳转的标签名</param> /// <param name="text">选择支按钮上的文本</param> /// <param name="normalDesc">正常时的精灵描述子</param> /// <param name="overDesc">鼠标悬停时的精灵描述子</param> /// <param name="onDesc">鼠标按下时的精灵描述子</param> public void AddBranchButton(int id, double X, double Y, string jumpTarget, string text, SpriteDescriptor normalDesc, SpriteDescriptor overDesc = null, SpriteDescriptor onDesc = null) { BranchButtonDescriptor bbd = new BranchButtonDescriptor() { Id = id, JumpTarget = jumpTarget, X = X, Y = Y, Z = GlobalDataContainer.GAME_Z_BRANCHBUTTON + id, Text = text, NormalDescriptor = normalDesc, OverDescriptor = overDesc, OnDescriptor = onDesc }; this.branchDescVec[id] = bbd; }