public SkillComponents(SkillPanel skillPanel) { _skillPanel = skillPanel; _skillControls = new List <SkillControls>(); _panel = new Panel(); _completeSkillPanel = _skillPanel.GetImageFromSkillPanel("skill panel"); _completeSkillPanel.MakeTransparent(Color.White); _skillIconPanel = _skillPanel.GetImageFromSkillPanel("icon panel big"); _skillIconPanel.MakeTransparent(Color.White); _g = Graphics.FromImage(_completeSkillPanel); }
private Bitmap CreateConnectorLines(DataRow[] classSkills) { Bitmap connectorLineLayer = new Bitmap(_completeSkillPanel.Size.Width, _completeSkillPanel.Size.Height); Graphics g = Graphics.FromImage(connectorLineLayer); g.Clear(Color.Transparent); int xOffset = 52; int yOffset = 120 + 24; int spacingX = 120; int spacingY = 122 - 4; foreach (DataRow skill in classSkills) { foreach (DataRow required in classSkills) { int currentSkillIndex = (int)required["index"]; int requiredSkillIndex = (int)skill["requiredskills1"]; if (currentSkillIndex == requiredSkillIndex) { int x1 = (int)skill["skillPageColumn"]; int y1 = (int)skill["skillPageRow"]; int x2 = (int)required["skillPageColumn"]; int y2 = (int)required["skillPageRow"]; Bitmap connector = null; Point drawLocation = new Point(x2 * spacingX + xOffset, y2 * spacingY + yOffset); int distanceX = Math.Abs(x1 - x2); int distanceY = Math.Abs(y1 - y2); if (x1 == x2) { if (distanceY > 0) { connector = _skillPanel.GetImageFromSkillPanel("line_" + distanceY + "d"); drawLocation.Y += _skillIconPanel.Size.Height / 2; } } else if (x1 < x2) { connector = _skillPanel.GetImageFromSkillPanel("line_" + distanceX + "l_" + distanceY + "d"); drawLocation.X -= _skillIconPanel.Size.Width + 24; drawLocation.Y += _skillIconPanel.Size.Height / 2 - 2; } else if (x1 > x2) { connector = _skillPanel.GetImageFromSkillPanel("line_" + distanceX + "r_" + distanceY + "d"); drawLocation.Y += _skillIconPanel.Size.Height / 2; } g.DrawImage(connector, drawLocation); connector.Dispose(); } } } g.Dispose(); return(connectorLineLayer); }