public override void Draw(TextureBase texture, Renderer renderer, double elapsedGameTime, PointF position, Size renderSize, float opacity) { var blocks = UIGraphics.LayoutNinePatch(this.Resource, new Point((int)renderSize.Width, (int)renderSize.Height)); foreach (var block in blocks) { if (block.Texture != null && block.Rectangle.Width > 0 && block.Rectangle.Height > 0) { PointF pos = new PointF(block.Rectangle.X + position.X, block.Rectangle.Y + position.Y); Size size = new Size(block.Rectangle.Width, block.Rectangle.Height); ColorW color = new ColorW(1f, 1f, 1f, this.Opacity); renderer.Draw(block.Texture, pos, size, color, false); } } }
private void DrawContent(RenderEnv env, TooltipContent content, Vector2 position, bool adjustToWindow) { Vector2 padding = new Vector2(10, 8); Vector2 preferSize = new Vector2( Math.Max(content.size.X + padding.X * 2, 26), Math.Max(content.size.Y + padding.Y * 2, 26)); if (adjustToWindow) { position.X = Math.Max(0, Math.Min(position.X, env.Camera.Width - preferSize.X)); position.Y = Math.Max(0, Math.Min(position.Y, env.Camera.Height - preferSize.Y)); } env.Sprite.Begin(); var background = UIGraphics.LayoutNinePatch(this.Resource, new Point((int)preferSize.X, (int)preferSize.Y)); foreach (var block in background) { if (block.Rectangle.Width > 0 && block.Rectangle.Height > 0 && block.Texture != null) { var rect = new Rectangle((int)position.X + block.Rectangle.X, (int)position.Y + block.Rectangle.Y, block.Rectangle.Width, block.Rectangle.Height); env.Sprite.Draw(block.Texture, rect, Color.White); } } foreach (var block in content.blocks) { var pos = new Vector2(position.X + padding.X + block.Position.X, position.Y + padding.Y + block.Position.Y); env.Sprite.DrawStringEx(block.Font, block.Text, pos, block.ForeColor); } env.Sprite.End(); }
private void DrawContent(RenderEnv env, TooltipContent content, Vector2 position, bool adjustToWindow) { Vector2 padding = new Vector2(10, 8); Vector2 preferSize = new Vector2( Math.Max(content.size.X + padding.X * 2, 26), Math.Max(content.size.Y + padding.Y * 2, 26)); if (adjustToWindow) { position.X = Math.Max(0, Math.Min(position.X, env.Camera.Width - preferSize.X)); position.Y = Math.Max(0, Math.Min(position.Y, env.Camera.Height - preferSize.Y)); } env.Sprite.Begin(blendState: BlendState.NonPremultiplied); var background = UIGraphics.LayoutNinePatch(this.Resource, new Point((int)preferSize.X, (int)preferSize.Y)); foreach (var block in background) { if (block.Rectangle.Width > 0 && block.Rectangle.Height > 0 && block.Texture != null) { var rect = new Rectangle((int)position.X + block.Rectangle.X, (int)position.Y + block.Rectangle.Y, block.Rectangle.Width, block.Rectangle.Height); env.Sprite.Draw(block.Texture, rect, Color.White); } } if (content.textures != null) { foreach (var block in content.textures) { if (block.Texture != null) { var rect = block.Rectangle; rect.X += (int)(position.X + padding.X); rect.Y += (int)(position.Y + padding.Y); if (rect.Width == 0) { rect.Width = block.Texture.Width; } if (rect.Height == 0) { rect.Height = block.Texture.Height; } env.Sprite.Draw(block.Texture, rect, Color.White); } } } env.Sprite.Flush(); foreach (var block in content.blocks) { var pos = new Vector2(position.X + padding.X + block.Position.X, position.Y + padding.Y + block.Position.Y); var baseFont = block.Font.BaseFont; if (baseFont is XnaFont) { env.Sprite.DrawStringEx((XnaFont)baseFont, block.Text, pos, block.ForeColor); env.Sprite.Flush(); } else if (baseFont is D2DFont) { env.D2DRenderer.Begin(); env.D2DRenderer.DrawString((D2DFont)baseFont, block.Text, pos, block.ForeColor); env.D2DRenderer.End(); } } env.Sprite.End(); }