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(); }
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); }
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); }
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(); }