private void okButton_Click(object sender, RoutedEventArgs e)
        {
            this.fractionPart             = new QuestionFractionPart();
            this.fractionPart.WithPart    = new QuestionContent(this.withPartTextBox.Text, ContentType.Text);
            this.fractionPart.Denominator = new QuestionContent(this.denominatorTextBox.Text, ContentType.Text);
            this.fractionPart.Numerator   = new QuestionContent(this.numeratorTextBox.Text, ContentType.Text);

            this.DialogResult = true;
            this.Close();
        }
Example #2
0
        public static IEnumerable <QuestionOption> CreateFractionOption(QuestionContent numerator, QuestionContent denominator)
        {
            QuestionOption       option       = new QuestionOption();
            QuestionFractionPart fractionPart = new QuestionFractionPart();

            fractionPart.Denominator     = denominator;
            fractionPart.Numerator       = numerator;
            option.OptionContent.Content = fractionPart.PlaceHolder;
            option.OptionContent.QuestionPartCollection.Add(fractionPart);

            yield return(option);
        }
Example #3
0
        internal static string CreateImageFile(QuestionFractionPart fraction, string fontFamilly)
        {
            SizeF iamgeSize = SizeF.Empty;

            var image = new Bitmap(56, 200, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

            using (var g = Graphics.FromImage(image))
            {
                string temp = string.Empty;
                if (!string.IsNullOrEmpty(fraction.WithPart.Content))
                {
                    temp = fraction.WithPart.Content;
                }

                if (fraction.Numerator.Content.Length > fraction.Denominator.Content.Length)
                {
                    temp += fraction.Numerator.Content;
                }
                else
                {
                    temp += fraction.Denominator.Content;
                }

                temp += "99";

                using (Font font = new Font(fontFamilly, 14f))
                {
                    iamgeSize = g.MeasureString(temp, font);
                }
            }

            image.Dispose();

            image = new Bitmap((int)(iamgeSize.Width + 1), (int)(iamgeSize.Height + 1) * 2, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
            using (var g = Graphics.FromImage(image))
            {
                RectangleF rectF = new RectangleF(new PointF(0f, 0f), iamgeSize);
                rectF.Height = rectF.Height * 2;

                using (Font font = new Font(fontFamilly, 14f))
                {
                    if (!string.IsNullOrEmpty(fraction.WithPart.Content))
                    {
                        StringFormat strFmt = new StringFormat();
                        strFmt.Alignment     = StringAlignment.Near;
                        strFmt.LineAlignment = StringAlignment.Center;
                        g.DrawString(fraction.WithPart.Content, font, System.Drawing.Brushes.Black, rectF, strFmt);

                        SizeF withSize = g.MeasureString(fraction.WithPart.Content, font);

                        RectangleF rightRectF = new RectangleF(withSize.Width, 0, rectF.Width - withSize.Width, rectF.Height);

                        strFmt.Alignment     = StringAlignment.Center;
                        strFmt.LineAlignment = StringAlignment.Near;
                        g.DrawString(fraction.Numerator.Content, font, System.Drawing.Brushes.Black, rightRectF, strFmt);

                        g.DrawLine(System.Drawing.Pens.Black, rightRectF.Left, rightRectF.Height / 2, rightRectF.Right, rightRectF.Height / 2);

                        strFmt.LineAlignment = StringAlignment.Far;
                        g.DrawString(fraction.Denominator.Content, font, System.Drawing.Brushes.Black, rightRectF, strFmt);
                    }
                    else
                    {
                        StringFormat strFmt = new StringFormat();
                        strFmt.Alignment     = StringAlignment.Center;
                        strFmt.LineAlignment = StringAlignment.Near;
                        g.DrawString(fraction.Numerator.Content, font, System.Drawing.Brushes.Black, rectF, strFmt);

                        g.DrawLine(System.Drawing.Pens.Black, 0, iamgeSize.Height, rectF.Right, iamgeSize.Height);

                        strFmt.LineAlignment = StringAlignment.Far;
                        g.DrawString(fraction.Denominator.Content, font, System.Drawing.Brushes.Black, rectF, strFmt);
                    }
                }
            }

            string imageFile = getFractionImageFile(fraction.Id);

            if (File.Exists(imageFile))
            {
                File.Delete(imageFile);
            }

            image.Save(imageFile);

            return(imageFile);
        }
Example #4
0
        public static UIElement CreateUIPart(QuestionContentPart part, Brush foreground)
        {
            if (part is QuestionBlank)
            {
                NumberOnlyTextBox blankTextBox = new NumberOnlyTextBox();
                blankTextBox.Tag               = part;
                blankTextBox.Width             = 80;
                blankTextBox.VerticalAlignment = System.Windows.VerticalAlignment.Center;
                blankTextBox.FontSize          = 20;
                blankTextBox.Margin            = new Thickness(1);
                return(blankTextBox);
            }
            else if (part is ArithmeticDecimalValuePart)
            {
                ArithmeticDecimalValuePart decimalPart = part as ArithmeticDecimalValuePart;

                if (decimalPart.Value == null)
                {
                    return(CreateText(string.Empty, foreground));
                }

                return(CreateText(decimalPart.Value.ToString(), foreground));
            }
            else if (part is QuestionFractionPart)
            {
                QuestionFractionPart fractionPart = part as QuestionFractionPart;

                FractionControl fractionControl = new FractionControl(20, FontWeights.Medium, 2, new SolidColorBrush(Colors.Black));
                fractionControl.FractionPart      = fractionPart;
                fractionControl.FontSize          = 20;
                fractionControl.FontWeight        = FontWeights.Medium;
                fractionControl.VerticalAlignment = VerticalAlignment.Center;
                fractionControl.Foreground        = foreground;
                return(fractionControl);
            }
            else if (part is ArithmeticSignPart)
            {
            }
            else if (part is QuestionTextPart)
            {
                QuestionTextPart textPart = part as QuestionTextPart;

                return(CreateText(textPart.Text, foreground));
            }
            else if (part is QuestionPowerExponentPart)
            {
                PowerExponentControl powerExponentControl = new PowerExponentControl(20, FontWeights.Medium, new SolidColorBrush(Colors.Black));
                powerExponentControl.PowerExponentPart = part as QuestionPowerExponentPart;
                powerExponentControl.Foreground        = foreground;

                return(powerExponentControl);
            }
            else if (part is QuestionPowerPart)
            {
            }
            else if (part is QuestionFlowDocumentPart)
            {
            }
            else if (part is ArithmeticFractionValuePart)
            {
                ArithmeticFractionValuePart arithmeticFractionValuePart = part as ArithmeticFractionValuePart;
                ArithmeticFractionControl   arithmeticFractionControl   = new ArithmeticFractionControl(20, FontWeights.Medium, 2, foreground);
                arithmeticFractionControl.Denominator = arithmeticFractionValuePart.Denominator;
                arithmeticFractionControl.Numerator   = arithmeticFractionValuePart.Numerator;
                arithmeticFractionControl.Foreground  = foreground;
                return(arithmeticFractionControl);
            }

            throw new NotSupportedException();
        }