Skip to content

Commit

Permalink
Use using blocks instead of Dispose call
Browse files Browse the repository at this point in the history
  • Loading branch information
cqjjjzr committed Aug 7, 2022
1 parent b71ab43 commit 1c849d4
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 35 deletions.
2 changes: 0 additions & 2 deletions FrmLyrics.cs
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,6 @@ public void DrawLyrics1Line(string lyrics)
if (Height != bitmap.Height) Height = bitmap.Height;

GdiplusHelper.SetBitmap(bitmap, 255, Handle, Left, Top, Width, Height);
bitmap.Dispose();
}
}
}
Expand All @@ -125,7 +124,6 @@ public void DrawLyrics2Line(string line1, string line2)
if (Height != bitmap.Height) Height = bitmap.Height;

GdiplusHelper.SetBitmap(bitmap, 255, Handle, Left, Top, Width, Height);
bitmap.Dispose();
}
}
}
Expand Down
75 changes: 42 additions & 33 deletions LyricsRenderer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,16 +54,17 @@ public static Bitmap Render1LineLyrics(string line1, IDeviceContext dc)

public static Bitmap Render2LineLyrics(string line1, string line2, IDeviceContext dc)
{
var line1Bitmap = RenderLyrics(line1, _mainFont, dc);
var line2Bitmap = RenderLyrics(line2, _subFont, dc);
var bitmap = new Bitmap(Math.Max(line1Bitmap.Width, line2Bitmap.Width), line1Bitmap.Height + line2Bitmap.Height);
var g = Graphics.FromImage(bitmap);
g.DrawImage(line1Bitmap, new PointF(0, 0));
g.DrawImage(line2Bitmap, new PointF(0, line1Bitmap.Height * 0.9f));
g.Dispose();
line1Bitmap.Dispose();
line2Bitmap.Dispose();
return bitmap;
using (Bitmap line1Bitmap = RenderLyrics(line1, _mainFont, dc),
line2Bitmap = RenderLyrics(line2, _subFont, dc))
{
var bitmap = new Bitmap(Math.Max(line1Bitmap.Width, line2Bitmap.Width), line1Bitmap.Height + line2Bitmap.Height);
using (var g = Graphics.FromImage(bitmap))
{
g.DrawImage(line1Bitmap, new PointF(0, 0));
g.DrawImage(line2Bitmap, new PointF(0, line1Bitmap.Height * 0.9f));
}
return bitmap;
}
}

public static Bitmap RenderLyrics(string lyric, Font font, IDeviceContext dc)
Expand All @@ -76,35 +77,43 @@ public static Bitmap RenderLyrics(string lyric, Font font, IDeviceContext dc)
if (height <= 0) height = 1;
var bitmap = new Bitmap(_width, height);
bitmap.SetResolution(_dpi, _dpi);
var g = Graphics.FromImage(bitmap);
g.InterpolationMode = InterpolationMode.High;
g.SmoothingMode = SmoothingMode.AntiAlias;
g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
g.CompositingQuality = CompositingQuality.HighQuality;
using (var g = Graphics.FromImage(bitmap))
{
g.InterpolationMode = InterpolationMode.High;
g.SmoothingMode = SmoothingMode.AntiAlias;
g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
g.CompositingQuality = CompositingQuality.HighQuality;

var fontEmSize = font.SizeInPoints * _dpi / 72;

var initialRect = new RectangleF(0, 0, _width, height);
using (var stringPath = new GraphicsPath(FillMode.Alternate))
{
stringPath.AddString(lyric, font.FontFamily, (int)font.Style, fontEmSize, initialRect, Format);

float fontEmSize = font.SizeInPoints * _dpi / 72;
// Using matrix to translate the path
using (var mat = new Matrix())
{
mat.Translate(-ShadowOffset, -ShadowOffset);
stringPath.Transform(mat);

var initialRect = new RectangleF(0, 0, _width, height);
var stringPath = new GraphicsPath(FillMode.Alternate);
stringPath.AddString(lyric, font.FontFamily, (int)font.Style, fontEmSize, initialRect, Format);
g.FillPath(ShadowBrush, stringPath);

var mat = new Matrix();
mat.Translate(-ShadowOffset, -ShadowOffset);
stringPath.Transform(mat);
mat.Translate(ShadowOffset * 2, ShadowOffset * 2);
stringPath.Transform(mat);
}

g.FillPath(ShadowBrush, stringPath);

mat.Translate(ShadowOffset * 2, ShadowOffset * 2);
stringPath.Transform(mat);
if (_borderPen != null)
g.DrawPath(_borderPen, stringPath);

if (_borderPen != null)
g.DrawPath(_borderPen, stringPath);
var stringBrush = CreateGradientBrush(initialRect);
g.FillPath(stringBrush, stringPath);
//g.DrawString(lyric, _mainFont, stringBrush, dstRect);
g.Dispose();
stringBrush.Dispose();
stringPath.Dispose();
using (var stringBrush = CreateGradientBrush(initialRect))
{
g.FillPath(stringBrush, stringPath);
}
}
}

return bitmap;
}

Expand Down

0 comments on commit 1c849d4

Please sign in to comment.