Ejemplo n.º 1
0
 /// <summary>
 /// 重绘文字层
 /// </summary>
 /// <param name="id">文字层id</param>
 /// <param name="descriptor">文字层描述子</param>
 /// <param name="forceReload">是否强制重新载入背景图资源文件</param>
 private void ReDrawMessageLayer(int id, MessageLayerDescriptor descriptor, bool forceReload)
 {
     // 不需要重绘的情况
     if (descriptor == null) { return; }
     MessageLayer msglay = this.messageLayerVec[id];
     if (msglay == null ||
         msglay.BackgroundSprite.ResourceName != descriptor.BackgroundResourceName ||
         forceReload)
     {
         YuriSprite bgSprite = ResourceManager.GetInstance().GetPicture(descriptor.BackgroundResourceName, new Int32Rect(-1, 0, 0, 0));
         MessageLayer newLayer = new MessageLayer();
         newLayer.BackgroundSprite = bgSprite;
         newLayer.Id = id;
         this.messageLayerVec[id] = msglay = newLayer;
     }
     // 重绘文本层
     this.RemoveMessageLayer(msglay);
     this.DrawMessageLayer(msglay, descriptor);
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 初始化文字层描述子
 /// </summary>
 private void InitMessageLayerDescriptors()
 {
     // 初始化主文本层
     MessageLayerDescriptor mainMsgLayer = new MessageLayerDescriptor()
     {
         Id = 0,
         BackgroundResourceName = GlobalDataContainer.GAME_MESSAGELAYER_BACKGROUNDFILENAME,
         FontColorR = GlobalDataContainer.GAME_FONT_COLOR.R,
         FontColorG = GlobalDataContainer.GAME_FONT_COLOR.G,
         FontColorB = GlobalDataContainer.GAME_FONT_COLOR.B,
         FontName = GlobalDataContainer.GAME_FONT_NAME,
         FontSize = GlobalDataContainer.GAME_FONT_FONTSIZE,
         FontShadow = GlobalDataContainer.GAME_MESSAGELAYER_SHADOW,
         LineHeight = GlobalDataContainer.GAME_FONT_LINEHEIGHT,
         HorizonAlign = HorizontalAlignment.Left,
         VertiAlign = VerticalAlignment.Bottom,
         X = GlobalDataContainer.GAME_MESSAGELAYER_X,
         Y = GlobalDataContainer.GAME_MESSAGELAYER_Y,
         Z = GlobalDataContainer.GAME_Z_MESSAGELAYER,
         Height = GlobalDataContainer.GAME_MESSAGELAYER_H,
         Width = GlobalDataContainer.GAME_MESSAGELAYER_W,
         Padding = new MyThickness(GlobalDataContainer.GAME_MESSAGELAYER_PADDING),
         Opacity = 1.0,
         Visible = false,
         Text = ""
     };
     this.msgLayerDescVec.Add(mainMsgLayer);
     // 初始化附加文本层
     for (int i = 1; i < GlobalDataContainer.GAME_MESSAGELAYER_COUNT; i++)
     {
         MessageLayerDescriptor mld = new MessageLayerDescriptor()
         {
             Id = i,
             BackgroundResourceName = "",
             FontColorR = GlobalDataContainer.GAME_FONT_COLOR.R,
             FontColorG = GlobalDataContainer.GAME_FONT_COLOR.G,
             FontColorB = GlobalDataContainer.GAME_FONT_COLOR.B,
             FontName = GlobalDataContainer.GAME_FONT_NAME,
             FontSize = GlobalDataContainer.GAME_FONT_FONTSIZE,
             FontShadow = GlobalDataContainer.GAME_MESSAGELAYER_SHADOW,
             LineHeight = GlobalDataContainer.GAME_FONT_LINEHEIGHT,
             HorizonAlign = HorizontalAlignment.Left,
             VertiAlign = VerticalAlignment.Top,
             X = GlobalDataContainer.GAME_MESSAGELAYER_X,
             Y = GlobalDataContainer.GAME_MESSAGELAYER_Y,
             Z = GlobalDataContainer.GAME_Z_MESSAGELAYER + i,
             Height = GlobalDataContainer.GAME_MESSAGELAYER_H,
             Width = GlobalDataContainer.GAME_MESSAGELAYER_W,
             Padding = new MyThickness(GlobalDataContainer.GAME_MESSAGELAYER_PADDING),
             Opacity = 1.0,
             Visible = false,
             Text = ""
         };
         this.msgLayerDescVec.Add(mld);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 为主窗体描绘一个文字层
 /// </summary>
 /// <param name="msglay">文字层</param>
 /// <param name="descriptor">文字层描述子</param>
 private void DrawMessageLayer(MessageLayer msglay, MessageLayerDescriptor descriptor)
 {
     TextBlock msgBlock = new TextBlock();
     msglay.DisplayBinding = msgBlock;
     if (msglay.BackgroundSprite != null && msglay.BackgroundSprite.SpriteBitmapImage != null)
     {
         ImageBrush ib = new ImageBrush(msglay.BackgroundSprite.SpriteBitmapImage);
         ib.Stretch = Stretch.None;
         ib.AlignmentX = AlignmentX.Left;
         ib.AlignmentY = AlignmentY.Top;
         msgBlock.Background = ib;
     }
     msglay.Width = descriptor.Width;
     msglay.Height = descriptor.Height;
     msglay.Opacity = descriptor.Opacity;
     msglay.Padding = (Thickness)descriptor.Padding;
     msglay.LineHeight = descriptor.LineHeight;
     msglay.HorizontalAlignment = descriptor.HorizonAlign;
     msglay.VerticalAlignment = descriptor.VertiAlign;
     msglay.FontColor = Color.FromRgb(descriptor.FontColorR, descriptor.FontColorG, descriptor.FontColorB);
     msglay.FontSize = descriptor.FontSize;
     msglay.FontName = descriptor.FontName;
     msglay.FontShadow = descriptor.FontShadow;
     msglay.DisplayBinding.TextWrapping = TextWrapping.Wrap;
     msglay.DisplayBinding.TextAlignment = TextAlignment.Left;
     Canvas.SetLeft(msgBlock, descriptor.X);
     Canvas.SetTop(msgBlock, descriptor.Y);
     Canvas.SetZIndex(msgBlock, descriptor.Z);
     msglay.Visibility = descriptor.Visible ? Visibility.Visible : Visibility.Hidden;
     this.view.BO_MainGrid.Children.Add(msgBlock);
 }
Ejemplo n.º 4
0
 /// <summary>
 /// 为屏幕增加一个文字层描述子
 /// </summary>
 /// <param name="id">文字层id</param>
 /// <param name="source">文字层背景图资源名</param>
 /// <param name="Visible">文字层可见性</param>
 /// <param name="W">层宽度</param>
 /// <param name="H">层高度</param>
 /// <param name="Padding">文字在层内与层边框的间距</param>
 /// <param name="X">左上角在画面的X坐标</param>
 /// <param name="Y">左上角在画面的Y坐标</param>
 /// <param name="Z">Z坐标</param>
 /// <param name="Opacity">不透明度</param>
 /// <param name="FontName">字体名称</param>
 /// <param name="FontColor">字体颜色</param>
 /// <param name="FontSize">字号</param>
 /// <param name="Ha">层在屏幕上横向对齐属性</param>
 /// <param name="Va">层在屏幕上纵向对齐属性</param>
 /// <param name="LineHeight">行距</param>
 public void EditMsgLayer(int id, string source, bool Visible, double W, double H, Thickness Padding, double X, double Y, int Z, double Opacity, string FontName, Color FontColor, double FontSize, HorizontalAlignment Ha, VerticalAlignment Va, double LineHeight, bool shadow)
 {
     MessageLayerDescriptor mld = new MessageLayerDescriptor()
     {
         BackgroundResourceName = source,
         Visible = Visible,
         X = X,
         Y = Y,
         Z = Z + GlobalDataContainer.GAME_Z_MESSAGELAYER,
         Opacity = Opacity,
         Padding = new MyThickness(Padding),
         Width = W,
         Height = H,
         FontName = FontName,
         FontColorR = FontColor.R,
         FontColorG = FontColor.G,
         FontColorB = FontColor.B,
         FontSize = FontSize,
         HorizonAlign = Ha,
         VertiAlign = Va,
         LineHeight = LineHeight,
         FontShadow = shadow,
         Text = ""
     };
     this.msgLayerDescVec[id] = mld;
 }