/// <summary> /// Draws single door or window /// </summary> /// <param name="canvas">Canvas to draw in</param> /// <param name="dow">DoorOrWindow</param> /// <param name="ratio">What ratio to use</param> /// <param name="leftBottomPoint">Left botom coordinate of start</param> private void DrawDoorOrWindow(Canvas canvas, DoorOrWindow dow, double ratio, Point leftBottomPoint) { Rectangle rect = new Rectangle(); rect.Width = (double)dow.Width * ratio; rect.Height = (double)dow.Height * ratio; rect.StrokeThickness = 1; rect.Stroke = Brushes.Gray; rect.Fill = Brushes.White; // Consider position of whole result shape Canvas.SetLeft(rect, leftBottomPoint.X + (double)dow.X * ratio); Canvas.SetBottom(rect, this.can_Result.ActualHeight - leftBottomPoint.Y + (double)dow.Y * ratio); canvas.Children.Add(rect); }
/// <summary> /// Gets number of vertical transom that are crossed by windows /// </summary> /// <param name="dow">Window to check</param> /// <returns>Returns number of crossed transoms</returns> private int GetTransomCrossedByWindow(DoorOrWindow dow) { if (dow.IsDoor) return 0; int transomsCrossed = (WindowsWidthRoundedBySpacing / this.Spacing) - 1; // Attached on left side? if (dow.X % this.Spacing == 0) ++transomsCrossed; // Attached on right side? if ((dow.X + dow.Width) % this.Spacing == 0) ++transomsCrossed; return Math.Max(0, transomsCrossed); }