public override void Draw(SpriteBatch spriteBatch, float alpha) { Color dynamicListColor = new Color(new Vector4(ColorBgDefault.ToVector3().X, ColorBgDefault.ToVector3().Y, ColorBgDefault.ToVector3().Z, alpha)); spriteBatch.Draw(listBackground, Position, dynamicListColor); //Items int endIndex = Items.Count; if (startIndex + visibleItems < Items.Count) { endIndex = startIndex + visibleItems; } int lastItem = Items.Count; if (lastItem > visibleItems) { lastItem = visibleItems; } for (int i = 0; i < lastItem; i++) { Color dynamicTextColor = new Color(new Vector4(ColorFgDefault.ToVector3().X, ColorFgDefault.ToVector3().Y, ColorFgDefault.ToVector3().Z, alpha)); spriteBatch.DrawString(SpriteFont, Items[i + startIndex] as string, Position + new Vector2(4f, 4f) + new Vector2(0f, SpriteFont.LineSpacing * i), dynamicTextColor); //Selected Area Color dynamicAreaColor = new Color(new Vector4(Color.White.ToVector3().X, Color.White.ToVector3().Y, Color.White.ToVector3().Z, alpha)); if ((Items[i + startIndex] as string) == SelectedItem) { spriteBatch.Draw(selectionArea, Position + new Vector2(4f, 4f) + new Vector2(0f, SpriteFont.LineSpacing * i), dynamicAreaColor); } //Selection Area if (MouseState.LeftButton == ButtonState.Released && !Form.InUse) { if (bIsOverItem(i)) { spriteBatch.Draw(selectionArea, Position + new Vector2(4f, 4f) + new Vector2(0f, SpriteFont.LineSpacing * i), dynamicAreaColor); } } } if (Scrollbar != null) { Scrollbar.Draw(spriteBatch, alpha); } }
public override void Draw(SpriteBatch spriteBatch, float alpha) { Color dynamicColor = new Color(new Vector4(ColorFgDefault.ToVector3(), alpha)); Vector2 drawPos = Position; Vector2 textSize = SpriteFont.MeasureString(Text); string[] Lines = Text.Split(new char[] { '\n' }); if (ColorBgDefault != Color.Transparent) { Color dynBg = new Color(new Vector4(ColorBgDefault.ToVector3(), alpha)); mButtonArea = new Rectangle((int)Position.X - Value, (int)Position.Y - Value, ControlSize.X, ControlSize.Y); if (ControlSize.X == 0) { mButtonArea.Width = (int)textSize.X + 5; } if (ControlSize.Y == 0) { mButtonArea.Height = (int)textSize.Y + 5; } if (mTextureBlank == null) { mTextureBlank = EngineCore.ContentLoader.Load <Texture2D>(@"Interface\blank"); } spriteBatch.Draw(mTextureBlank, mButtonArea, dynBg); if (BorderColor != Color.Transparent) { Texture2D tex = DrawHelper.Rect2Texture(1, 1, 0, BorderColor); spriteBatch.DrawRectangle(tex, mButtonArea, 1, BorderColor); } } else { mButtonArea = new Rectangle(mButtonArea.X, mButtonArea.Y, ControlSize.X, ControlSize.Y); } for (int i = 0; i < Lines.Length; i++) { if (i > 0) { drawPos.Y += SpriteFont.LineSpacing; } spriteBatch.DrawString(SpriteFont, Lines[i], drawPos, dynamicColor); } }
public override void Draw(SpriteBatch spriteBatch, float alpha) { Color dynamicColor = new Color(new Vector4(ColorBgDefault.ToVector3().X, ColorBgDefault.ToVector3().Y, ColorBgDefault.ToVector3().Z, alpha)); Color dynamicTextColor = new Color(new Vector4(ColorFgDefault.ToVector3().X, ColorFgDefault.ToVector3().Y, ColorFgDefault.ToVector3().Z, alpha)); spriteBatch.Draw(ControlTextures[0], Position, dynamicColor); spriteBatch.Draw(ControlTextures[1], ControlRectangles[0], dynamicColor); spriteBatch.Draw(ControlTextures[2], Position + new Vector2(ControlTextures[0].Width + ControlRectangles[0].Width, 0f), dynamicColor); spriteBatch.Draw(ControlTextures[3], ControlRectangles[1], dynamicColor); spriteBatch.Draw(ControlTextures[4], ControlRectangles[2], dynamicColor); spriteBatch.Draw(ControlTextures[5], ControlRectangles[3], dynamicColor); spriteBatch.Draw(ControlTextures[6], Position + new Vector2(0f, ControlTextures[0].Height + ControlRectangles[1].Height), dynamicColor); spriteBatch.Draw(ControlTextures[7], ControlRectangles[4], dynamicColor); spriteBatch.Draw(ControlTextures[8], Position + new Vector2(ControlTextures[0].Width + ControlRectangles[0].Width, ControlTextures[0].Height + ControlRectangles[1].Height), dynamicColor); visibleText = GetTextFrom(startIndex.X); if (passChar != string.Empty) { string passText = ""; for (int i = 0; i < visibleText.Length; i++) { passText += passChar; } visibleText = passText; } Vector2 drawPos = Position + new Vector2(5f, ControlRectangles[0].Height + (ControlRectangles[2].Height - SpriteFont.LineSpacing) / 2f); drawPos.X = (int)drawPos.X; drawPos.Y = (int)drawPos.Y; spriteBatch.DrawString(SpriteFont, visibleText, drawPos, dynamicTextColor); if (!bLocked && bHasFocus && bCursorVisible && Form.TopForm == this.Owner) { DrawCursor(spriteBatch, dynamicTextColor); } }
public override void InitTextures() { ControlTextures = new Texture2D[2]; ControlTextures[0] = new Texture2D(Constants.GraphicsDevice, ControlSize.X, 18, true, SurfaceFormat.Color); ControlTextures[1] = new Texture2D(Constants.GraphicsDevice, ControlSize.X - 8, ControlTextures[0].Height - 8, true, SurfaceFormat.Color); ControlRectangles = new Rectangle[2]; ControlRectangles[0] = new Rectangle(0, 0, ControlTextures[1].Width, ControlTextures[1].Height); ControlRectangles[1] = new Rectangle(0, 0, ControlTextures[1].Width, ControlTextures[1].Height); Color[] borderPixel = new Color[ControlTextures[0].Width * ControlTextures[0].Height]; Color[] progressBarPixel = new Color[ControlTextures[1].Width * ControlTextures[1].Height]; for (int y = 0; y < ControlTextures[0].Height; y++) { for (int x = 0; x < ControlTextures[0].Width; x++) { if (x < 3 || y < 3 || x > ControlTextures[0].Width - 3 || y > ControlTextures[0].Height - 3) { if (x == 0 || y == 0 || x == ControlTextures[0].Width - 1 || y == ControlTextures[0].Height - 1) { borderPixel[x + y * ControlTextures[0].Width] = Color.Black; } if (x == 1 || y == 1 || x == ControlTextures[0].Width - 2 || y == ControlTextures[0].Height - 2) { borderPixel[x + y * ControlTextures[0].Width] = Color.LightGray; } if (x == 2 || y == 2 || x == ControlTextures[0].Width - 3 || y == ControlTextures[0].Height - 3) { borderPixel[x + y * ControlTextures[0].Width] = Color.Gray; } } else { borderPixel[x + y * ControlTextures[0].Width] = new Color(new Vector4(ColorBgDefault.ToVector3(), 1f)); } } } for (int y = 0; y < ControlTextures[1].Height; y++) { for (int x = 0; x < ControlTextures[1].Width; x++) { bool bInvisiblePixel = false; if (ProgressBarStyle == EProgressBarStyle.Blocks) { int xPos = x % (int)(ControlTextures[1].Width / (float)numberOfBlocks); if (xPos == 0 || xPos == 1) { bInvisiblePixel = true; } } if (!bInvisiblePixel) { float gradient = 1.0f - y * 0.035f; Color pixelColor = new Color(new Vector4(ColorFgDefault.ToVector3() * gradient, 1f)); progressBarPixel[x + y * ControlTextures[1].Width] = pixelColor; } } } ControlTextures[0].SetData <Color>(borderPixel); ControlTextures[1].SetData <Color>(progressBarPixel); }