Added step label use letters option

This commit is contained in:
Jaex 2017-12-27 17:48:51 +03:00
parent bb4f2420bc
commit 4971d98b45
6 changed files with 38 additions and 10 deletions

View file

@ -1257,5 +1257,16 @@ public static string SafeStringFormat(IFormatProvider provider, string format, p
return format;
}
public static string NumberToLetters(int num)
{
string result = "";
while (--num >= 0)
{
result = (char)('A' + num % 26) + result;
num /= 26;
}
return result;
}
}
}

View file

@ -2888,7 +2888,7 @@ internal static string ShapeType_RegionRectangle {
}
/// <summary>
/// Looks up a localized string similar to Crop image.
/// Looks up a localized string similar to Tool: Crop image.
/// </summary>
internal static string ShapeType_ToolCrop {
get {

View file

@ -984,7 +984,7 @@ Would you like to download it?</value>
<value>Drawing: Text (Background)</value>
</data>
<data name="ShapeType_ToolCrop" xml:space="preserve">
<value>Crop image</value>
<value>Tool: Crop image</value>
</data>
<data name="ShapeType_DrawingImageScreen" xml:space="preserve">
<value>Drawing: Image (Screen)</value>

View file

@ -75,6 +75,7 @@ public class AnnotationOptions
public int StepBorderSize { get; set; } = 0;
public Color StepFillColor { get; set; } = PrimaryColor;
public int StepFontSize { get; set; } = 18;
public bool StepUseLetters { get; set; } = false;
// Blur effect
public int BlurRadius { get; set; } = 15;

View file

@ -38,6 +38,7 @@ public class StepDrawingShape : EllipseDrawingShape
public int FontSize { get; set; }
public int Number { get; set; }
public bool UseLetters { get; set; }
public StepDrawingShape()
{
@ -62,6 +63,7 @@ public override void OnConfigLoad()
FillColor = AnnotationOptions.StepFillColor;
Shadow = AnnotationOptions.Shadow;
FontSize = AnnotationOptions.StepFontSize;
UseLetters = AnnotationOptions.StepUseLetters;
}
public override void OnConfigSave()
@ -71,6 +73,7 @@ public override void OnConfigSave()
AnnotationOptions.StepFillColor = FillColor;
AnnotationOptions.Shadow = Shadow;
AnnotationOptions.StepFontSize = FontSize;
AnnotationOptions.StepUseLetters = UseLetters;
}
public override void OnDraw(Graphics g)
@ -80,9 +83,11 @@ public override void OnDraw(Graphics g)
protected void DrawNumber(Graphics g)
{
string text = UseLetters ? Helpers.NumberToLetters(Number) : Number.ToString();
using (Font font = new Font(FontFamily.GenericSansSerif, FontSize, FontStyle.Bold))
{
Size textSize = g.MeasureString(Number.ToString(), font).ToSize();
Size textSize = g.MeasureString(text, font).ToSize();
int maxSize = Math.Max(textSize.Width, textSize.Height);
int padding = 3;
@ -93,21 +98,21 @@ protected void DrawNumber(Graphics g)
if (Shadow)
{
DrawNumber(g, Number, font, ShadowColor, Rectangle.LocationOffset(ShadowOffset));
DrawNumber(g, text, font, ShadowColor, Rectangle.LocationOffset(ShadowOffset));
}
DrawNumber(g, Number, font, BorderColor, Rectangle);
DrawNumber(g, text, font, BorderColor, Rectangle);
}
}
protected void DrawNumber(Graphics g, int number, Font font, Color textColor, Rectangle rect)
protected void DrawNumber(Graphics g, string text, Font font, Color textColor, Rectangle rect)
{
using (StringFormat sf = new StringFormat { Alignment = StringAlignment.Center, LineAlignment = StringAlignment.Center })
using (Brush textBrush = new SolidBrush(textColor))
{
g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
rect = rect.LocationOffset(0, 1);
g.DrawString(number.ToString(), font, textBrush, rect, sf);
g.DrawString(text, font, textBrush, rect, sf);
g.TextRenderingHint = TextRenderingHint.SystemDefault;
}
}

View file

@ -49,8 +49,8 @@ internal partial class ShapeManager
private ToolStripEx tsMain;
private ToolStripButton tsbSaveImage, tsbBorderColor, tsbFillColor, tsbHighlightColor;
private ToolStripDropDownButton tsddbShapeOptions;
private ToolStripMenuItem tsmiArrowHeadsBothSide, tsmiShadow, tsmiUndo, tsmiDelete, tsmiDeleteAll, tsmiMoveTop, tsmiMoveUp, tsmiMoveDown, tsmiMoveBottom,
tsmiRegionCapture, tsmiQuickCrop, tsmiTips, tsmiImageEditorBackgroundColor;
private ToolStripMenuItem tsmiArrowHeadsBothSide, tsmiShadow, tsmiStepUseLetters, tsmiUndo, tsmiDelete, tsmiDeleteAll, tsmiMoveTop, tsmiMoveUp, tsmiMoveDown,
tsmiMoveBottom, tsmiRegionCapture, tsmiQuickCrop, tsmiTips, tsmiImageEditorBackgroundColor;
private ToolStripLabeledNumericUpDown tslnudBorderSize, tslnudCornerRadius, tslnudCenterPoints, tslnudBlurRadius, tslnudPixelateSize, tslnudStepFontSize;
private ToolStripLabel tslDragLeft, tslDragRight;
private ToolStripLabeledComboBox tscbCursorTypes;
@ -535,6 +535,16 @@ internal void CreateToolbar()
};
tsddbShapeOptions.DropDownItems.Add(tslnudStepFontSize);
tsmiStepUseLetters = new ToolStripMenuItem("Use letters");
tsmiStepUseLetters.Checked = false;
tsmiStepUseLetters.CheckOnClick = true;
tsmiStepUseLetters.Click += (sender, e) =>
{
AnnotationOptions.StepUseLetters = tsmiStepUseLetters.Checked;
UpdateCurrentShape();
};
tsddbShapeOptions.DropDownItems.Add(tsmiStepUseLetters);
tsmiShadow = new ToolStripMenuItem(Resources.ShapeManager_CreateToolbar_DropShadow);
tsmiShadow.Checked = true;
tsmiShadow.CheckOnClick = true;
@ -1228,6 +1238,7 @@ private void UpdateMenu()
tsbHighlightColor.Image = ImageHelpers.CreateColorPickerIcon(AnnotationOptions.HighlightColor, new Rectangle(0, 0, 16, 16));
tslnudStepFontSize.Content.Value = AnnotationOptions.StepFontSize;
tsmiStepUseLetters.Checked = AnnotationOptions.StepUseLetters;
tsmiShadow.Checked = AnnotationOptions.Shadow;
@ -1315,7 +1326,7 @@ private void UpdateMenu()
tslnudCenterPoints.Visible = shapeType == ShapeType.DrawingLine || shapeType == ShapeType.DrawingArrow;
tsmiArrowHeadsBothSide.Visible = shapeType == ShapeType.DrawingArrow;
tslnudStepFontSize.Visible = shapeType == ShapeType.DrawingStep;
tslnudStepFontSize.Visible = tsmiStepUseLetters.Visible = shapeType == ShapeType.DrawingStep;
tscbCursorTypes.Visible = shapeType == ShapeType.DrawingCursor;
tslnudBlurRadius.Visible = shapeType == ShapeType.EffectBlur;
tslnudPixelateSize.Visible = shapeType == ShapeType.EffectPixelate;