protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime time) { //Create string string Txt = "Step " + m_Counter1; if (m_ShowNode) Txt += "\r\nVisited nodes " + m_Counter2; // Txt = "raka"; //Draw string renderer.DrawString(m_Font, Txt, rect, Color.White, Alignment.BottomLeft); }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { this.Left = this.Left - this.Width; // Eeeeeeeeh? this.Top = this.Top - this.Height; // Eeeeeeeeh! // As with the panning in TilemapBar I have no idea of what happens in Neoforce... // ...but hey, at least I made it work! base.DrawControl(renderer, rect, gameTime); }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { base.DrawControl(renderer, rect, gameTime); clipRect.X = rect.X + 1; clipRect.Y = rect.Y + 1; renderer.Draw(_clipImg, clipRect, Color.White); clipRect.Y += 5; renderer.DrawString(_policyTitleFont, PolicyType.Title, clipRect, Color.White, Alignment.TopCenter); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { SkinLayer layer = Skin.Layers["Control"]; SpriteFont font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null; Color col = (layer.Text != null) ? layer.Text.Colors.Enabled : Color.White; Point offset = new Point(layer.Text.OffsetX, layer.Text.OffsetY); renderer.DrawLayer(this, layer, rect); if (font != null && Text != null && Text != "") { renderer.DrawString(this, layer, Text, new Rectangle(rect.Left, rect.Top + layer.ContentMargins.Top, rect.Width, Skin.ClientMargins.Top - layer.ContentMargins.Horizontal), false, offset.X, offset.Y, false); } }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { //Set color based on state Color FontColor = Color.White; if (ControlState == ControlState.Hovered) FontColor = Color.Gold; if (ControlState == ControlState.Pressed) FontColor = Color.Gray; //Set offset based on state Rectangle Rect = new Rectangle(rect.X, rect.Y, rect.Width, rect.Height); if (ControlState == ControlState.Pressed) { Rect.X += 4; Rect.Y += 4; } //Draw text only if (m_Font != null) renderer.DrawString(m_Font, Text, Rect, FontColor, Alignment.MiddleLeft ); }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime time) { //Draw the lifebar renderer.Draw(m_BarImage, rect, Color.White); //For each life for (int i = 0; i < m_Life; i++) { //Calculate position Rectangle LifeRect = new Rectangle(rect.Left, rect.Top, m_LifeImage.Width, m_LifeImage.Height); LifeRect.X += Global.LIFE_X + (i * (m_LifeImage.Width - 2)); LifeRect.Y += Global.LIFE_Y; //Draw it renderer.Draw(m_LifeImage, LifeRect, Color.White); } }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { _policyRect.X = rect.X; _policyRect.Y = rect.Y; if (Policy != null) { if (MainWindow.Game.Human.Policies.Contains(Policy)) renderer.Draw(_button44gold, _policyRect, Color.White); else if (MainWindow.Game.Human.PoliciesInReach.Contains(Policy)) renderer.Draw(_button44, _policyRect, Color.Gray); else renderer.Draw(_button44, _policyRect, Color.White); renderer.Draw(Policy.Image, _policyRect, Color.White); } }
public override void Render(Renderer renderer, GameTime gameTime) { if (_backgroundBuffer == null) UpdateBackground(Width, Height); // if buffer is still empty, something wrong if (_backgroundBuffer == null) return; base.Render(renderer, gameTime); if (Visible) { renderer.Begin(BlendingMode.Default); renderer.Draw(_backgroundBuffer, this.AbsoluteRect, AlphaColor); renderer.End(); } }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { if (Player != null) { _iconRect.X = rect.X; _iconRect.Y = rect.Y; renderer.Draw(Player.Leader.Image, _iconRect, Color.White); renderer.DrawString(_font, Player.Leader.Title, rect.X + 24, rect.Y, Color.White); renderer.DrawString(_font, Player.Score.ToString(), rect.X + rect.Width - 20, rect.Y, Color.White); } _seperatorRect.X = rect.X; _seperatorRect.Y = rect.Y + rect.Height - 2; renderer.Draw(bar340x2, _seperatorRect, Color.White); }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { base.DrawControl(renderer, rect, gameTime); SkinLayer layer = Skin.Layers["Control"]; if(Text != null && Text != "") { int width = (int)layer.Text.Font.Resource.MeasureString(Text).X; int ox = 5; if (width < this.Width) { ox = (this.Width - width) / 2; } renderer.DrawString(this, layer, Text, rect, true, ox, 0); } }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { // We draw the control the same way the ancestor does. // In this case, ancestor draws all states automatically according to description in the skin file. base.DrawControl(renderer, rect, gameTime); //SkinLayer layer = Skin.Layers[lrButton]; //int ox = 0; int oy = 0; //// We want to have the text pushed a bit down, when we press the button //if (ControlState == ControlState.Pressed) //{ // ox = 1; oy = 1; //} //// Now we draw text over our control. This method does it automatically, //// based on the description in the skin file. //// We use our pressed-state offset for text position. //renderer.DrawString(this, layer, Text, rect, true, ox, oy); }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { if( MainWindow.Game.Human.Technologies.Contains( Tech )) renderer.Draw(_backgroundReached, rect, Color.White); else if( MainWindow.Game.Human.CurrentResearch == Tech ) renderer.Draw(_backgroundActive, rect, Color.White); else if( MainWindow.Game.Human.PossibleTechnologies.Contains( Tech ) ) renderer.Draw(_backgroundPossible, rect, Color.White); else renderer.Draw(_backgroundNoReach, rect, Color.White); if( Tech != null ) { _techIconRect.X = rect.X + 2; _techIconRect.Y = rect.Y; renderer.Draw(Tech.Image, _techIconRect, Color.White); _techTitleRect.X = rect.X + 70; _techTitleRect.Y = rect.Y + 5; renderer.DrawString(_font, Tech.Title,_techTitleRect, Color.White,Alignment.MiddleLeft ); } }
protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { if (_buffer == null) UpdateBackground(rect.Width, rect.Height); // if buffer is still empty, something wrong if (_buffer == null) return; // completely transparent, don't draw anything if (Alpha == 0) return; if (Enabled) { if (Hovered) renderer.Draw(_bufferGlow, rect, AlphaColor); else renderer.Draw(_buffer, rect, AlphaColor); } else renderer.Draw(_bufferDisabled, rect, AlphaColor); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { SkinLayer l1 = Skin.Layers["Control"]; SkinLayer l2 = Skin.Layers["Selection"]; rs = new Rectangle[Items.Count]; renderer.DrawLayer(this, l1, rect, ControlState.Enabled); int prev = l1.ContentMargins.Left; for (int i = 0; i < Items.Count; i++) { MenuItem mi = Items[i]; int tw = (int)l1.Text.Font.Resource.MeasureString(mi.Text).X + l1.ContentMargins.Horizontal; rs[i] = new Rectangle(rect.Left + prev, rect.Top + l1.ContentMargins.Top, tw, Height - l1.ContentMargins.Vertical); prev += tw; if (ItemIndex != i) { if (mi.Enabled && Enabled) { renderer.DrawString(this, l1, mi.Text, rs[i], ControlState.Enabled, false); } else { renderer.DrawString(this, l1, mi.Text, rs[i], ControlState.Disabled, false); } } else { if (Items[i].Enabled && Enabled) { renderer.DrawLayer(this, l2, rs[i], ControlState.Enabled); renderer.DrawString(this, l2, mi.Text, rs[i], ControlState.Enabled, false); } else { renderer.DrawLayer(this, l2, rs[i], ControlState.Disabled); renderer.DrawString(this, l2, mi.Text, rs[i], ControlState.Disabled, false); } } } }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { RecalcParams(); SkinLayer p = Skin.Layers["Control"]; SkinLayer l = Skin.Layers["Scale"]; float ratio = 0.66f; int h = (int)(ratio * rect.Height); int t = rect.Top + (Height - h) / 2; float px = ((float)value / (float)range); int w = (int)Math.Ceiling(px * (rect.Width - p.ContentMargins.Horizontal - btnSlider.Width)) + 2; if (w < l.SizingMargins.Vertical) w = l.SizingMargins.Vertical; if (w > rect.Width - p.ContentMargins.Horizontal) w = rect.Width - p.ContentMargins.Horizontal; Rectangle r1 = new Rectangle(rect.Left + p.ContentMargins.Left, t + p.ContentMargins.Top, w, h - p.ContentMargins.Vertical); base.DrawControl(renderer, new Rectangle(rect.Left, t, rect.Width, h), gameTime); if (scale) renderer.DrawLayer(this, l, r1); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { SkinLayer l1 = Skin.Layers["Control"]; SkinLayer l2 = Skin.Layers["Header"]; Color col = this.Color != UndefinedColor ? this.Color : Color.White; Rectangle r1 = new Rectangle(rect.Left, rect.Top + l1.OffsetY, rect.Width, rect.Height - l1.OffsetY); if (tabPages.Count <= 0) { r1 = rect; } base.DrawControl(renderer, r1, gameTime); if (tabPages.Count > 0) { Rectangle prev = new Rectangle(rect.Left, rect.Top + l2.OffsetY, 0, l2.Height); for (int i = 0; i < tabPages.Count; i++) { SpriteFont font = l2.Text.Font.Resource; Margins margins = l2.ContentMargins; Point offset = new Point(l2.OffsetX, l2.OffsetY); if (i > 0) prev = tabPages[i - 1].HeaderRect; tabPages[i].CalcRect(prev, font, margins, offset, i == 0); } for (int i = tabPages.Count - 1; i >= 0; i--) { int li = tabPages[i].Enabled ? l2.States.Enabled.Index : l2.States.Disabled.Index; Color lc = tabPages[i].Enabled ? l2.Text.Colors.Enabled : l2.Text.Colors.Disabled; if (i == hoveredIndex) { li = l2.States.Hovered.Index; lc = l2.Text.Colors.Hovered; } Margins m = l2.ContentMargins; Rectangle rx = tabPages[i].HeaderRect; Rectangle sx = new Rectangle(rx.Left + m.Left, rx.Top + m.Top, rx.Width - m.Horizontal, rx.Height - m.Vertical); if (i != selectedIndex) { renderer.DrawLayer(l2, rx, col, li); renderer.DrawString(l2.Text.Font.Resource, tabPages[i].Text, sx, lc, l2.Text.Alignment); } } Margins mi = l2.ContentMargins; Rectangle ri = tabPages[selectedIndex].HeaderRect; Rectangle si = new Rectangle(ri.Left + mi.Left, ri.Top + mi.Top, ri.Width - mi.Horizontal, ri.Height - mi.Vertical); renderer.DrawLayer(l2, ri, col, l2.States.Focused.Index); renderer.DrawString(l2.Text.Font.Resource, tabPages[selectedIndex].Text, si, l2.Text.Colors.Focused, l2.Text.Alignment, l2.Text.OffsetX, l2.Text.OffsetY, false); } }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /// <summary> /// Initializes the controls manager. /// </summary> //////////////////////////////////////////////////////////////////////////// public override void Initialize() { base.Initialize(); if (autoCreateRenderTarget) { if (renderTarget != null) { renderTarget.Dispose(); } renderTarget = CreateRenderTarget(); } GraphicsDevice.DeviceReset += new System.EventHandler<System.EventArgs>(GraphicsDevice_DeviceReset); input.Initialize(); renderer = new Renderer(this); SetSkin(skinName); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { if (mode == ButtonMode.PushButton && pushed) { SkinLayer l = Skin.Layers[lrButton]; renderer.DrawLayer(l, rect, l.States.Pressed.Color, l.States.Pressed.Index); if (l.States.Pressed.Overlay) { renderer.DrawLayer(l, rect, l.Overlays.Pressed.Color, l.Overlays.Pressed.Index); } } else { base.DrawControl(renderer, rect, gameTime); } SkinLayer layer = Skin.Layers[lrButton]; SpriteFont font = (layer.Text != null && layer.Text.Font != null) ? layer.Text.Font.Resource : null; Color col = Color.White; int ox = 0; int oy = 0; if (ControlState == ControlState.Pressed) { if (layer.Text != null) col = layer.Text.Colors.Pressed; ox = 1; oy = 1; } if (glyph != null) { Margins cont = layer.ContentMargins; Rectangle r = new Rectangle(rect.Left + cont.Left, rect.Top + cont.Top, rect.Width - cont.Horizontal, rect.Height - cont.Vertical); renderer.DrawGlyph(glyph, r); } else { renderer.DrawString(this, layer, Text, rect, true, ox, oy); } }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// internal override void Render(Renderer renderer, GameTime gameTime) { if (Visible && Shadow) { SkinControl c = Manager.Skin.Controls[skShadow]; SkinLayer l = c.Layers[lrShadow]; Color cl = Color.FromNonPremultiplied(l.States.Enabled.Color.R, l.States.Enabled.Color.G, l.States.Enabled.Color.B, Alpha); renderer.Begin(BlendingMode.Default); renderer.DrawLayer(l, new Rectangle(Left - c.OriginMargins.Left, Top - c.OriginMargins.Top, Width + c.OriginMargins.Horizontal, Height + c.OriginMargins.Vertical), cl, 0); renderer.End(); } base.Render(renderer, gameTime); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /// <summary> /// Initializes the controls manager. /// </summary> //////////////////////////////////////////////////////////////////////////// public override void Initialize() { base.Initialize(); Game.Window.ClientSizeChanged += (object sender, System.EventArgs e) => { InvalidateRenderTarget(); }; if (autoCreateRenderTarget) { if (renderTarget != null) { renderTarget.Dispose(); } renderTarget = CreateRenderTarget(); } GraphicsDevice.DeviceReset += new System.EventHandler<System.EventArgs>(GraphicsDevice_DeviceReset); input.Initialize(); renderer = new Renderer(this); SetSkin(skinName); }
//////////////////////////////////////////////////////////////////////////// protected override void Dispose(bool disposing) { if (disposing) { this.disposing = true; // Recursively disposing all controls added to the manager and its child controls. if (controls != null) { int c = controls.Count; for (int i = 0; i < c; i++) { if (controls.Count > 0) controls[0].Dispose(); } } // Disposing all components added to manager. if (components != null) { int c = components.Count; for (int i = 0; i < c; i++) { if (components.Count > 0) components[0].Dispose(); } } if (content != null) { content.Unload(); content.Dispose(); content = null; } if (renderer != null) { renderer.Dispose(); renderer = null; } if (input != null) { input.Dispose(); input = null; } } if (GraphicsDevice != null) GraphicsDevice.DeviceReset -= new System.EventHandler<System.EventArgs>(GraphicsDevice_DeviceReset); base.Dispose(disposing); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// public DrawEventArgs(Renderer renderer, Rectangle rectangle, GameTime gameTime) { Renderer = renderer; Rectangle = rectangle; GameTime = gameTime; }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { base.DrawControl(renderer, rect, gameTime); }
//////////////////////////////////////////////////////////////////////////// #endregion #region //// Destructors /////// //////////////////////////////////////////////////////////////////////////// protected override void Dispose(bool disposing) { if (disposing) { this.disposing = true; // Recursively disposing all controls added to the manager and its child controls. if (controls != null) { int c = controls.Count; for (int i = 0; i < c; i++) { if (controls.Count > 0) controls[0].Dispose(); } } // Disposing all components added to manager. if (components != null) { int c = components.Count; for (int i = 0; i < c; i++) { if (components.Count > 0) components[0].Dispose(); } } if (content != null) { content.Unload(); content.Dispose(); content = null; } if (renderer != null) { renderer.Dispose(); renderer = null; } if (input != null) { input.Dispose(); input = null; } } base.Dispose(disposing); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /// <summary> /// Renders all controls added to the manager. /// </summary> /// <param name="gameTime"> /// Time passed since the last call to Draw. /// </param> public virtual void BeginDraw(GameTime gameTime) { if (!renderTargetValid && AutoCreateRenderTarget) { if (renderTarget != null) RenderTarget.Dispose(); RenderTarget = CreateRenderTarget(); renderer = new Renderer(this); renderTargetValid = true; } this.Draw(gameTime); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { if (Border != BevelBorder.None && Style != BevelStyle.None) { if (Border != BevelBorder.All) { DrawPart(renderer, rect, Border, Style, false); } else { DrawPart(renderer, rect, BevelBorder.Left, Style, true); DrawPart(renderer, rect, BevelBorder.Top, Style, true); DrawPart(renderer, rect, BevelBorder.Right, Style, true); DrawPart(renderer, rect, BevelBorder.Bottom, Style, true); } } }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { sbVert.Invalidate(); pane.Invalidate(); //DrawPane(this, new DrawEventArgs(renderer, rect, gameTime)); base.DrawControl(renderer, rect, gameTime); }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// private void DrawPart(Renderer renderer, Rectangle rect, BevelBorder pos, BevelStyle style, bool all) { SkinLayer layer = Skin.Layers["Control"]; Color c1 = Utilities.ParseColor(layer.Attributes["LightColor"].Value); Color c2 = Utilities.ParseColor(layer.Attributes["DarkColor"].Value); Color c3 = Utilities.ParseColor(layer.Attributes["FlatColor"].Value); if (Color != UndefinedColor) c3 = Color; Texture2D img = Skin.Layers["Control"].Image.Resource; int x1 = 0; int y1 = 0; int w1 = 0; int h1 = 0; int x2 = 0; int y2 = 0; int w2 = 0; int h2 = 0; if (style == BevelStyle.Bumped || style == BevelStyle.Etched) { if (all && (pos == BevelBorder.Top || pos == BevelBorder.Bottom)) { rect = new Rectangle(rect.Left + 1, rect.Top, rect.Width - 2, rect.Height); } else if (all && (pos == BevelBorder.Left)) { rect = new Rectangle(rect.Left, rect.Top, rect.Width, rect.Height - 1); } switch (pos) { case BevelBorder.Left: { x1 = rect.Left; y1 = rect.Top; w1 = 1; h1 = rect.Height; x2 = x1 + 1; y2 = y1; w2 = w1; h2 = h1; break; } case BevelBorder.Top: { x1 = rect.Left; y1 = rect.Top; w1 = rect.Width; h1 = 1; x2 = x1; y2 = y1 + 1; w2 = w1; h2 = h1; break; } case BevelBorder.Right: { x1 = rect.Left + rect.Width - 2; y1 = rect.Top; w1 = 1; h1 = rect.Height; x2 = x1 + 1; y2 = y1; w2 = w1; h2 = h1; break; } case BevelBorder.Bottom: { x1 = rect.Left; y1 = rect.Top + rect.Height - 2; w1 = rect.Width; h1 = 1; x2 = x1; y2 = y1 + 1; w2 = w1; h2 = h1; break; } } } else { switch (pos) { case BevelBorder.Left: { x1 = rect.Left; y1 = rect.Top; w1 = 1; h1 = rect.Height; break; } case BevelBorder.Top: { x1 = rect.Left; y1 = rect.Top; w1 = rect.Width; h1 = 1; break; } case BevelBorder.Right: { x1 = rect.Left + rect.Width - 1; y1 = rect.Top; w1 = 1; h1 = rect.Height; break; } case BevelBorder.Bottom: { x1 = rect.Left; y1 = rect.Top + rect.Height - 1; w1 = rect.Width; h1 = 1; break; } } } switch (Style) { case BevelStyle.Bumped: { renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c1); renderer.Draw(img, new Rectangle(x2, y2, w2, h2), c2); break; } case BevelStyle.Etched: { renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c2); renderer.Draw(img, new Rectangle(x2, y2, w2, h2), c1); break; } case BevelStyle.Raised: { Color c = c1; if (pos == BevelBorder.Left || pos == BevelBorder.Top) c = c1; else c = c2; renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c); break; } case BevelStyle.Lowered: { Color c = c1; if (pos == BevelBorder.Left || pos == BevelBorder.Top) c = c2; else c = c1; renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c); break; } default: { renderer.Draw(img, new Rectangle(x1, y1, w1, h1), c3); break; } } }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { SkinLayer l1 = captionVisible ? Skin.Layers[lrCaption] : Skin.Layers[lrFrameTop]; SkinLayer l2 = Skin.Layers[lrFrameLeft]; SkinLayer l3 = Skin.Layers[lrFrameRight]; SkinLayer l4 = Skin.Layers[lrFrameBottom]; SkinLayer l5 = Skin.Layers[lrIcon]; LayerStates s1, s2, s3, s4; SpriteFont f1 = l1.Text.Font.Resource; Color c1 = l1.Text.Colors.Enabled; if ((Focused || (Manager.FocusedControl != null && Manager.FocusedControl.Root == this.Root)) && ControlState != ControlState.Disabled) { s1 = l1.States.Focused; s2 = l2.States.Focused; s3 = l3.States.Focused; s4 = l4.States.Focused; c1 = l1.Text.Colors.Focused; } else if (ControlState == ControlState.Disabled) { s1 = l1.States.Disabled; s2 = l2.States.Disabled; s3 = l3.States.Disabled; s4 = l4.States.Disabled; c1 = l1.Text.Colors.Disabled; } else { s1 = l1.States.Enabled; s2 = l2.States.Enabled; s3 = l3.States.Enabled; s4 = l4.States.Enabled; c1 = l1.Text.Colors.Enabled; } renderer.DrawLayer(Skin.Layers[lrWindow], rect, Skin.Layers[lrWindow].States.Enabled.Color, Skin.Layers[lrWindow].States.Enabled.Index); if (borderVisible) { renderer.DrawLayer(l1, new Rectangle(rect.Left, rect.Top, rect.Width, l1.Height), s1.Color, s1.Index); renderer.DrawLayer(l2, new Rectangle(rect.Left, rect.Top + l1.Height, l2.Width, rect.Height - l1.Height - l4.Height), s2.Color, s2.Index); renderer.DrawLayer(l3, new Rectangle(rect.Right - l3.Width, rect.Top + l1.Height, l3.Width, rect.Height - l1.Height - l4.Height), s3.Color, s3.Index); renderer.DrawLayer(l4, new Rectangle(rect.Left, rect.Bottom - l4.Height, rect.Width, l4.Height), s4.Color, s4.Index); if (iconVisible && (icon != null || l5 != null) && captionVisible) { Texture2D i = (icon != null) ? icon : l5.Image.Resource; renderer.Draw(i, GetIconRect(), Color.White); } int icosize = 0; if (l5 != null && iconVisible && captionVisible) { icosize = l1.Height - l1.ContentMargins.Vertical + 4 + l5.OffsetX; } int closesize = 0; if (btnClose.Visible) { closesize = btnClose.Width - (btnClose.Skin.Layers[lrButton].OffsetX); } Rectangle r = new Rectangle(rect.Left + l1.ContentMargins.Left + icosize, rect.Top + l1.ContentMargins.Top, rect.Width - l1.ContentMargins.Horizontal - closesize - icosize, l1.Height - l1.ContentMargins.Top - l1.ContentMargins.Bottom); int ox = l1.Text.OffsetX; int oy = l1.Text.OffsetY; renderer.DrawString(f1, Text, r, c1, l1.Text.Alignment, ox, oy, true); } }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// protected override void DrawControl(Renderer renderer, Rectangle rect, GameTime gameTime) { base.DrawControl(renderer, rect, gameTime); SkinLayer l1 = Skin.Layers["Control"]; SkinLayer l2 = Skin.Layers["Selection"]; int vsize = LineHeight(); Color col = Color.White; for (int i = 0; i < Items.Count; i++) { int mod = i > 0 ? 2 : 0; int left = rect.Left + l1.ContentMargins.Left + vsize; int h = vsize - mod - (i < (Items.Count - 1) ? 1 : 0); int top = rect.Top + l1.ContentMargins.Top + (i * vsize) + mod; if (Items[i].Separated && i > 0) { Rectangle r = new Rectangle(left, rect.Top + l1.ContentMargins.Top + (i * vsize), LineWidth() - vsize + 4, 1); renderer.Draw(Manager.Skin.Controls["Control"].Layers[0].Image.Resource, r, l1.Text.Colors.Enabled); } if (ItemIndex != i) { if (Items[i].Enabled) { Rectangle r = new Rectangle(left, top, LineWidth() - vsize, h); renderer.DrawString(this, l1, Items[i].Text, r, false); col = l1.Text.Colors.Enabled; } else { Rectangle r = new Rectangle(left + l1.Text.OffsetX, top + l1.Text.OffsetY, LineWidth() - vsize, h); renderer.DrawString(l1.Text.Font.Resource, Items[i].Text, r, l1.Text.Colors.Disabled, l1.Text.Alignment); col = l1.Text.Colors.Disabled; } } else { if (Items[i].Enabled) { Rectangle rs = new Rectangle(rect.Left + l1.ContentMargins.Left, top, Width - (l1.ContentMargins.Horizontal - Skin.OriginMargins.Horizontal), h); renderer.DrawLayer(this, l2, rs); Rectangle r = new Rectangle(left, top, LineWidth() - vsize, h); renderer.DrawString(this, l2, Items[i].Text, r, false); col = l2.Text.Colors.Enabled; } else { Rectangle rs = new Rectangle(rect.Left + l1.ContentMargins.Left, top, Width - (l1.ContentMargins.Horizontal - Skin.OriginMargins.Horizontal), vsize); renderer.DrawLayer(l2, rs, l2.States.Disabled.Color, l2.States.Disabled.Index); Rectangle r = new Rectangle(left + l1.Text.OffsetX, top + l1.Text.OffsetY, LineWidth() - vsize, h); renderer.DrawString(l2.Text.Font.Resource, Items[i].Text, r, l2.Text.Colors.Disabled, l2.Text.Alignment); col = l2.Text.Colors.Disabled; } } if (Items[i].Image != null) { Rectangle r = new Rectangle(rect.Left + l1.ContentMargins.Left + 3, rect.Top + top + 3, LineHeight() - 6, LineHeight() - 6); renderer.Draw(Items[i].Image, r, Color.White); } if (Items[i].Items != null && Items[i].Items.Count > 0) { renderer.Draw(Manager.Skin.Images["Shared.ArrowRight"].Resource, rect.Left + LineWidth() - 4, rect.Top + l1.ContentMargins.Top + (i * vsize) + 8, col); } } }