本文整理汇总了C#中IGraphicsContext.DrawText方法的典型用法代码示例。如果您正苦于以下问题:C# IGraphicsContext.DrawText方法的具体用法?C# IGraphicsContext.DrawText怎么用?C# IGraphicsContext.DrawText使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IGraphicsContext
的用法示例。
在下文中一共展示了IGraphicsContext.DrawText方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Render
public void Render(IGraphicsContext context)
{
lock (_locker)
{
if (_brushBackground == null)
{
_brushBackground = new BasicBrush(_backgroundColor);
_penTransparent = new BasicPen();
_penBorder = new BasicPen(new BasicBrush(_borderColor), 1);
_rectText = context.MeasureText("12345:678.90", new BasicRectangle(0, 0, Frame.Width, Frame.Height), "HelveticaNeue", 10);
}
}
_density = context.Density;
Frame = new BasicRectangle(0, 0, context.BoundsWidth, context.BoundsHeight);
context.DrawRectangle(new BasicRectangle(0, 0, context.BoundsWidth, context.BoundsHeight), _brushBackground, _penTransparent);
if (_audioFile == null || _audioFileLength == 0)
return;
// Check if scale type needs to be updated
if (_lastWidth != ContentSize.Width)
{
_lastWidth = ContentSize.Width;
CalculateScale(context.Density);
}
// Draw scale borders
//Console.WriteLine("WaveFormScaleView - scaleType: {0} totalMinutes: {1} totalSeconds: {2} totalMinutesScaled: {3} totalSecondsScaled: {4}", scaleType.ToString(), totalMinutes, totalSeconds, totalMinutesScaled, totalSecondsScaled);
context.SetPen(_penBorder);
context.StrokeLine(new BasicPoint(0, ContentSize.Height - 1), new BasicPoint(ContentSize.Width, ContentSize.Height - 1));
int firstVisibleIndex = (int)Math.Floor(ContentOffset.X / _tickWidth);
int lastVisibleIndex = firstVisibleIndex + (int)Math.Floor(context.BoundsWidth / _tickWidth);
float tickX = -ContentOffset.X + (firstVisibleIndex * _tickWidth);
int majorTickIndex = (int)Math.Ceiling(firstVisibleIndex / 10f);
//for (int a = firstVisibleIndex; a < _tickCount; a++)
for (int a = firstVisibleIndex; a < lastVisibleIndex; a++)
{
// Ignore ticks out of bounds
bool isMajorTick = ((a % 10) == 0);
if (tickX >= 0 && tickX <= Frame.Width)
{
//Console.WriteLine("####> WaveFormView - Scale - tick {0} x: {1} isMajorTick: {2} tickCount: {3}", a, tickX, isMajorTick, tickCount);
if(isMajorTick)
// //context.DrawLine(new BasicPoint(tickX, context.BoundsHeight - (context.BoundsHeight / 1.25f)), new BasicPoint(tickX, context.BoundsHeight), _penMajorTick);
context.StrokeLine(new BasicPoint(tickX, 0), new BasicPoint(tickX, ContentSize.Height - 1));
else
context.StrokeLine(new BasicPoint(tickX, ContentSize.Height - (ContentSize.Height / 6) - 1), new BasicPoint(tickX, ContentSize.Height - 1));
if (isMajorTick)
{
// Draw dashed traversal line for major ticks
context.StrokeLine(new BasicPoint(tickX, ContentSize.Height - 1), new BasicPoint(tickX, ContentSize.Height - 1));
// Determine major scale text
int minutes = 0;
int seconds = 0;
switch (_scaleType)
{
case WaveFormScaleType._10minutes:
minutes = majorTickIndex * 10;
seconds = 0;
break;
case WaveFormScaleType._5minutes:
minutes = majorTickIndex * 5;
seconds = 0;
break;
case WaveFormScaleType._2minutes:
minutes = majorTickIndex * 2;
seconds = 0;
break;
case WaveFormScaleType._1minute:
minutes = majorTickIndex;
seconds = 0;
break;
case WaveFormScaleType._30seconds:
minutes = (int)Math.Floor(majorTickIndex / _scaleMultiplier);
seconds = (majorTickIndex % _scaleMultiplier == 0) ? 0 : 30;
break;
case WaveFormScaleType._10seconds:
minutes = (int)Math.Floor(majorTickIndex / _scaleMultiplier);
seconds = ((int)Math.Floor(majorTickIndex % _scaleMultiplier)) * 10;
break;
case WaveFormScaleType._5seconds:
minutes = (int)Math.Floor(majorTickIndex / _scaleMultiplier);
seconds = ((int)Math.Floor(majorTickIndex % _scaleMultiplier)) * 5;
break;
case WaveFormScaleType._1second:
minutes = (int)Math.Floor(majorTickIndex / _scaleMultiplier);
seconds = (int)Math.Floor(majorTickIndex % _scaleMultiplier);
break;
}
// Draw text at every major tick (minute count)
string scaleMajorTitle = string.Format("{0}:{1:00}", minutes, seconds);
//float y = ContentSize.Height - (ContentSize.Height/12f) - _rectText.Height - (0.5f * context.Density);
float y = 3 * context.Density;//ContentSize.Height - _rectText.Height - (10 * context.Density);
context.DrawText(scaleMajorTitle, new BasicPoint(tickX + (4 * context.Density), y), _textColor, FontFace, FontSize);
}
//.........这里部分代码省略.........
示例2: DrawMarkers
private void DrawMarkers(IGraphicsContext context, float cursorHeight)
{
for (int a = 0; a < _markers.Count; a++)
{
float xPct = (float)_markers[a].PositionBytes / (float)Length;
float x = (xPct * ContentSize.Width) - ContentOffset.X;
// Draw cursor line
var pen = _markers[a].MarkerId == _activeMarkerId ? _penSelectedMarkerLine : _penMarkerLine;
context.SetPen(pen);
context.StrokeLine(new BasicPoint(x, 0), new BasicPoint(x, cursorHeight));
// Draw text
var rectText = new BasicRectangle(x, 0, 12, 12);
var brush = _markers[a].MarkerId == _activeMarkerId ? _brushSelectedMarkerBackground : _brushMarkerBackground;
context.DrawRectangle(rectText, brush, _penTransparent);
string letter = Conversion.IndexToLetter(a).ToString();
context.DrawText(letter, new BasicPoint(x + 2, 0), _textColor, LetterFontFace, LetterFontSize);
}
}
示例3: DrawLoops
private void DrawLoops(IGraphicsContext context, float cursorHeight, float realScrollBarHeight)
{
if (_loop != null)
{
for (int a = 0; a < _loop.Segments.Count; a++)
{
var nextSegment = _loop.GetNextSegment(a);
float segmentPositionPercentage = (float)_loop.Segments[a].PositionBytes / (float)Length;
float startX = (segmentPositionPercentage * ContentSize.Width) - ContentOffset.X;
float nextSegmentPositionPercentage = 0;
float endX = 0;
if (nextSegment != null)
{
nextSegmentPositionPercentage = (float)nextSegment.PositionBytes / (float)Length;
endX = (nextSegmentPositionPercentage * ContentSize.Width) - ContentOffset.X;
}
// Draw loop lines
//var pen = _markers[a].MarkerId == _activeMarkerId ? _penSelectedMarkerLine : _penMarkerLine;
context.SetPen(_penLoopLine);
context.StrokeLine(new BasicPoint(startX, 0), new BasicPoint(startX, cursorHeight));
// Draw text
//var rectText = new BasicRectangle(startX, Frame.Height - 12, 12, 12);
var rectText = new BasicRectangle(startX, Frame.Height - realScrollBarHeight -12, endX > startX ? endX - startX : 12, 12);
//var brush = _markers [a].MarkerId == _activeMarkerId ? _brushSelectedMarkerBackground : _brushMarkerBackground;
context.DrawRectangle(rectText, _brushLoopBackground, _penTransparent);
context.DrawText((a+1).ToString(), new BasicPoint(startX + 2, Frame.Height - realScrollBarHeight - 12), _textColor, LetterFontFace, LetterFontSize);
}
}
}
示例4: DrawStatus
private void DrawStatus(IGraphicsContext context, string status)
{
//Console.WriteLine("WaveFormControl - DrawStatus - status: {0}", status);
context.DrawRectangle(Frame, new BasicBrush(_backgroundColor), new BasicPen());
var rectText = context.MeasureText(status, new BasicRectangle(0, 0, Frame.Width, 30), FontFace, FontSize);
float x = (context.BoundsWidth - rectText.Width) / 2;
float y = context.BoundsHeight / 2;
context.DrawText(status, new BasicPoint(x, y), _textColor, FontFace, FontSize);
}
示例5: DrawCell
//.........这里部分代码省略.........
// Calculate the icon position
float iconNowPlayingX = ((column.Width - availableWidthHeight) / 2) + state.OffsetX - HorizontalScrollBar.Value;
float iconNowPlayingY = state.OffsetY + ((_songCache.LineHeight - availableWidthHeight) / 2);
// Create NowPlaying rect (MUST be in integer)
_rectNowPlaying = new BasicRectangle((int)iconNowPlayingX, (int)iconNowPlayingY, availableWidthHeight, availableWidthHeight);
state.NowPlayingSongFound = true;
// Draw outer circle
brushGradient = new BasicGradientBrush(_theme.NowPlayingIndicatorBackgroundColor, _theme.NowPlayingIndicatorBackgroundColor, _timerAnimationNowPlayingCount % 360);
context.DrawEllipsis(_rectNowPlaying, brushGradient, penTransparent);
// Draw inner circle
rect = new BasicRectangle((int)iconNowPlayingX + 4, (int)iconNowPlayingY + 4, availableWidthHeight - 8, availableWidthHeight - 8);
brush = new BasicBrush(_theme.NowPlayingBackgroundColor);
context.DrawEllipsis(rect, brush, penTransparent);
}
}
else if (column.Title == "Album Cover")
{
DrawAlbumCoverZone(context, row, audioFile, state);
}
else if (audioFile != null)
{
// Print value depending on type
var propertyInfo = audioFile.GetType().GetProperty(column.FieldName);
if (propertyInfo != null)
{
string value = string.Empty;
try
{
if (propertyInfo.PropertyType.FullName == "System.String")
{
value = propertyInfo.GetValue(audioFile, null).ToString();
}
else if (propertyInfo.PropertyType.FullName.Contains("Int64") &&
propertyInfo.PropertyType.FullName.Contains("Nullable"))
{
long? longValue = (long?)propertyInfo.GetValue(audioFile, null);
if (longValue.HasValue)
value = longValue.Value.ToString();
}
else if (propertyInfo.PropertyType.FullName.Contains("DateTime") &&
propertyInfo.PropertyType.FullName.Contains("Nullable"))
{
DateTime? dateTimeValue = (DateTime?)propertyInfo.GetValue(audioFile, null);
if (dateTimeValue.HasValue)
value = dateTimeValue.Value.ToShortDateString() + " " + dateTimeValue.Value.ToShortTimeString();
}
else if (propertyInfo.PropertyType.FullName.Contains("System.UInt32"))
{
uint uintValue = (uint)propertyInfo.GetValue(audioFile, null);
value = uintValue.ToString();
}
else if (propertyInfo.PropertyType.FullName.Contains("System.Int32"))
{
int intValue = (int)propertyInfo.GetValue(audioFile, null);
value = intValue.ToString();
}
else if (propertyInfo.PropertyType.FullName.Contains("Sessions.Sound.AudioFileFormat"))
{
AudioFileFormat theValue = (AudioFileFormat)propertyInfo.GetValue(audioFile, null);
value = theValue.ToString();
}
}
catch
{
// Do nothing
}
//// The last column always take the remaining width
//int columnWidth = column.Width;
//if (b == _songCache.ActiveColumns.Count - 1)
//{
// // Calculate the remaining width
// int columnsWidth = 0;
// for (int c = 0; c < _songCache.ActiveColumns.Count - 1; c++)
// {
// columnsWidth += _songCache.ActiveColumns[c].Width;
// }
// //columnWidth = (int) (Frame.Width - columnsWidth + HorizontalScrollBar.Value);
//}
// Display text
rect = new BasicRectangle(state.OffsetX - HorizontalScrollBar.Value + 2, state.OffsetY + (_theme.Padding / 2), _songCache.ActiveColumns[col].Width, _songCache.LineHeight - _theme.Padding + 2);
//stringFormat.Trimming = StringTrimming.EllipsisCharacter;
//stringFormat.Alignment = StringAlignment.Near;
// Use bold for ArtistName and DiscTrackNumber
if (column.FieldName == "ArtistName" || column.FieldName == "DiscTrackNumber")
context.DrawText(value, rect, _theme.TextColor, _theme.FontNameBold, _theme.FontSize);
else
context.DrawText(value, rect, _theme.TextColor, _theme.FontName, _theme.FontSize);
}
}
state.OffsetX += column.Width;
}
}
示例6: DrawDebugInformation
private void DrawDebugInformation(IGraphicsContext context)
{
// Display debug information if enabled
if (_displayDebugInformation)
{
// Build debug string
var sbDebug = new StringBuilder();
sbDebug.AppendLine("Line Count: " + _items.Count.ToString());
sbDebug.AppendLine("Line Height: " + _songCache.LineHeight.ToString());
sbDebug.AppendLine("Lines Fit In Height: " + _songCache.NumberOfLinesFittingInControl.ToString());
sbDebug.AppendLine("Total Width: " + _songCache.TotalWidth);
sbDebug.AppendLine("Total Height: " + _songCache.TotalHeight);
sbDebug.AppendLine("Scrollbar Offset Y: " + _songCache.ScrollBarOffsetY);
sbDebug.AppendLine("HScrollbar Maximum: " + HorizontalScrollBar.Maximum.ToString());
sbDebug.AppendLine("HScrollbar LargeChange: " + HorizontalScrollBar.LargeChange.ToString());
sbDebug.AppendLine("HScrollbar Value: " + HorizontalScrollBar.Value.ToString());
sbDebug.AppendLine("VScrollbar Maximum: " + VerticalScrollBar.Maximum.ToString());
sbDebug.AppendLine("VScrollbar LargeChange: " + VerticalScrollBar.LargeChange.ToString());
sbDebug.AppendLine("VScrollbar Value: " + VerticalScrollBar.Value.ToString());
// Measure string
//stringFormat.Trimming = StringTrimming.Word;
//stringFormat.LineAlignment = StringAlignment.Near;
//SizeF sizeDebugText = g.MeasureString(sbDebug.ToString(), fontDefault, _columns[0].Width - 1, stringFormat);
var sizeDebugText = context.MeasureText(sbDebug.ToString(), new BasicRectangle(0, 0, _columns[0].Width, 40), _theme.FontName, _theme.FontSize);
var rect = new BasicRectangle(0, 0, _columns[0].Width - 1, sizeDebugText.Height);
// Draw background
var brush = new BasicBrush(new BasicColor(200, 0, 0));
var penTransparent = new BasicPen();
context.DrawRectangle(rect, brush, penTransparent);
// Draw string
context.DrawText(sbDebug.ToString(), rect, new BasicColor(255, 255, 255), _theme.FontName, _theme.FontSize);
}
}
示例7: DrawHeader
private void DrawHeader(IGraphicsContext context)
{
var rect = new BasicRectangle();
var pen = new BasicPen();
var penTransparent = new BasicPen();
var brushGradient = new BasicGradientBrush(_theme.HeaderBackgroundColor, _theme.HeaderBackgroundColor, 90);
// Draw header (for some reason, the Y must be set -1 to cover an area which isn't supposed to be displayed)
var rectBackgroundHeader = new BasicRectangle(0, -1, Frame.Width, _songCache.LineHeight + 1);
context.DrawRectangle(rectBackgroundHeader, brushGradient, penTransparent);
// Loop through columns
int offsetX = 0;
for (int b = 0; b < _songCache.ActiveColumns.Count; b++)
{
var column = _songCache.ActiveColumns[b];
if (column.Visible)
{
// The last column always take the remaining width
int columnWidth = column.Width;
if (b == _songCache.ActiveColumns.Count - 1)
{
// Calculate the remaining width
int columnsWidth = 0;
for (int c = 0; c < _songCache.ActiveColumns.Count - 1; c++)
columnsWidth += _songCache.ActiveColumns[c].Width;
columnWidth = (int) (Frame.Width - columnsWidth + HorizontalScrollBar.Value);
}
// Check if mouse is over this column header
if (column.IsMouseOverColumnHeader)
{
// Draw header (for some reason, the Y must be set -1 to cover an area which isn't supposed to be displayed)
rect = new BasicRectangle(offsetX - HorizontalScrollBar.Value, -1, column.Width, _songCache.LineHeight + 1);
brushGradient = new BasicGradientBrush(_theme.MouseOverHeaderBackgroundColor, _theme.MouseOverHeaderBackgroundColor, 90);
context.DrawRectangle(rect, brushGradient, penTransparent);
}
else if (column.IsUserMovingColumn)
{
// Draw header (for some reason, the Y must be set -1 to cover an area which isn't supposed to be displayed)
rect = new BasicRectangle(offsetX - HorizontalScrollBar.Value, -1, column.Width, _songCache.LineHeight + 1);
brushGradient = new BasicGradientBrush(new BasicColor(0, 0, 255), new BasicColor(0, 255, 0), 90);
context.DrawRectangle(rect, brushGradient, penTransparent);
}
// Check if the header title must be displayed
if (_songCache.ActiveColumns[b].IsHeaderTitleVisible)
{
// Display title
var rectTitle = new BasicRectangle(offsetX - HorizontalScrollBar.Value + 2, _theme.Padding / 2, column.Width, _songCache.LineHeight - _theme.Padding + 2);
//stringFormat.Trimming = StringTrimming.EllipsisCharacter;
context.DrawText(column.Title, rectTitle, _theme.HeaderTextColor, _theme.FontNameBold, _theme.FontSize);
}
// Draw column separator line; determine the height of the line
int columnHeight = (int) Frame.Height;
// Determine the height of the line; if the items don't fit the control height...
if (_items.Count < _songCache.NumberOfLinesFittingInControl)
{
// Set height as the number of items (plus header)
columnHeight = (_items.Count + 1) * _songCache.LineHeight;
}
// Draw column line
//g.DrawLine(Pens.DarkGray, new Point(offsetX + column.Width - HorizontalScrollBar.Value, 0), new Point(offsetX + column.Width - HorizontalScrollBar.Value, columnHeight));
// Check if the column is ordered by
if (column.FieldName == _orderByFieldName && !String.IsNullOrEmpty(column.FieldName))
{
// Create triangle points,,,
var ptTriangle = new BasicPoint[3];
// ... depending on the order by ascending value
int triangleWidthHeight = 8;
int trianglePadding = (_songCache.LineHeight - triangleWidthHeight) / 2;
if (_orderByAscending)
{
// Create points for ascending
ptTriangle[0] = new BasicPoint(offsetX + column.Width - triangleWidthHeight - (triangleWidthHeight / 2) - HorizontalScrollBar.Value, trianglePadding);
ptTriangle[1] = new BasicPoint(offsetX + column.Width - triangleWidthHeight - HorizontalScrollBar.Value, _songCache.LineHeight - trianglePadding);
ptTriangle[2] = new BasicPoint(offsetX + column.Width - triangleWidthHeight - triangleWidthHeight - HorizontalScrollBar.Value, _songCache.LineHeight - trianglePadding);
}
else
{
// Create points for descending
ptTriangle[0] = new BasicPoint(offsetX + column.Width - triangleWidthHeight - (triangleWidthHeight / 2) - HorizontalScrollBar.Value, _songCache.LineHeight - trianglePadding);
ptTriangle[1] = new BasicPoint(offsetX + column.Width - triangleWidthHeight - HorizontalScrollBar.Value, trianglePadding);
ptTriangle[2] = new BasicPoint(offsetX + column.Width - triangleWidthHeight - triangleWidthHeight - HorizontalScrollBar.Value, trianglePadding);
}
// Draw triangle
pen = new BasicPen(new BasicBrush(new BasicColor(255, 0, 0)), 1);
}
// Increment offset by the column width
offsetX += column.Width;
}
}
//.........这里部分代码省略.........
示例8: DrawAlbumCoverZone
//.........这里部分代码省略.........
// Check if the album cover is already in the pile
bool albumCoverFound = false;
foreach (var arg in _workerUpdateAlbumArtPile)
{
// Match by file path
if (arg.AudioFile.FilePath.ToUpper() == audioFile.FilePath.ToUpper())
{
albumCoverFound = true;
}
}
// Add to the pile only if the album cover isn't already in it
if (!albumCoverFound)
{
// Add item to update album art worker pile
var arg = new SongGridViewBackgroundWorkerArgument();
arg.AudioFile = audioFile;
arg.LineIndex = row;
arg.RectAlbumArt = new BasicRectangle(0, 0, heightWithPadding, heightWithPadding);
_workerUpdateAlbumArtPile.Add(arg);
}
}
catch(Exception ex)
{
Console.WriteLine("SongGridViewControl - Failed to load cache image: {0}" , ex);
}
}
// There are at least two lines; is there an album cover to display?
if (imageAlbumCover == null)
{
// There is no album cover to display; display only text.
// Set string format
//stringFormat.Alignment = StringAlignment.Center;
//stringFormat.Trimming = StringTrimming.EllipsisWord;
sizeArtistName = context.MeasureText(audioFile.ArtistName, new BasicRectangle(0, 0, widthAvailableForText, heightWithPadding), _theme.FontNameAlbumArtTitle, _theme.FontSize + 2);
sizeAlbumTitle = context.MeasureText(audioFile.AlbumTitle, new BasicRectangle(0, 0, widthAvailableForText, heightWithPadding), _theme.FontNameAlbumArtSubtitle, _theme.FontSize);
// Display the album title at the top of the zome
rectArtistNameText = new BasicRectangle(_theme.Padding - HorizontalScrollBar.Value, y + _theme.Padding, widthAvailableForText, heightWithPadding);
rectAlbumTitleText = new BasicRectangle(_theme.Padding - HorizontalScrollBar.Value, y + _theme.Padding + sizeArtistName.Height, widthAvailableForText, heightWithPadding);
displayArtistNameAndAlbumTitle = true;
useAlbumArtOverlay = true;
}
else
{
// There is an album cover to display with more than 2 lines.
// Set string format
//stringFormat.Alignment = StringAlignment.Near;
//stringFormat.Trimming = StringTrimming.EllipsisWord;
float widthRemainingForText = _columns[0].Width - (_theme.Padding * 3) - heightWithPadding;
sizeArtistName = context.MeasureText(audioFile.ArtistName, new BasicRectangle(0, 0, widthRemainingForText, heightWithPadding), _theme.FontNameAlbumArtTitle, _theme.FontSize + 2);
sizeAlbumTitle = context.MeasureText(audioFile.AlbumTitle, new BasicRectangle(0, 0, widthRemainingForText, heightWithPadding), _theme.FontNameAlbumArtSubtitle, _theme.FontSize);
// Try to center the cover art + padding + max text width
//float maxWidth = Math.Max(sizeArtistName.Width, sizeAlbumTitle.Width);
float albumCoverX = _theme.Padding - 2; // (_columns[0].Width - heightWithPadding - _theme.Padding - _theme.Padding - maxWidth) / 2;
float artistNameY = _theme.Padding + 1; // (albumCoverZoneHeight - sizeArtistName.Height - sizeAlbumTitle.Height) / 2;
// Display the album title at the top of the zome
rectArtistNameText = new BasicRectangle(albumCoverX + heightWithPadding + _theme.Padding - HorizontalScrollBar.Value, y + artistNameY, widthRemainingForText, heightWithPadding);
rectAlbumTitleText = new BasicRectangle(albumCoverX + heightWithPadding + _theme.Padding - HorizontalScrollBar.Value, y + artistNameY + sizeArtistName.Height + (_theme.Padding / 8f), widthRemainingForText, heightWithPadding);
rectAlbumCoverArt = new BasicRectangle(albumCoverX - HorizontalScrollBar.Value, y + _theme.Padding, heightWithPadding, heightWithPadding);
displayArtistNameAndAlbumTitle = widthRemainingForText > 20;
useAlbumArtOverlay = true;
}
// Display album cover
if (imageAlbumCover != null)
context.DrawImage(rectAlbumCoverArt, new BasicRectangle(0, 0, imageAlbumCover.ImageSize.Width, imageAlbumCover.ImageSize.Height), imageAlbumCover.Image);
//context.DrawImage(rectAlbumCoverArt, new BasicRectangle(0, 0, rectAlbumCoverArt.Width, rectAlbumCoverArt.Height), imageAlbumCover.Image);
// if (useAlbumArtOverlay)
// {
// // Draw artist name and album title background
// var rectArtistNameBackground = new BasicRectangle(rectArtistNameText.X - (_theme.Padding / 2), rectArtistNameText.Y - (_theme.Padding / 4), sizeArtistName.Width + _theme.Padding, sizeArtistName.Height + (_theme.Padding / 2));
// var rectAlbumTitleBackground = new BasicRectangle(rectAlbumTitleText.X - (_theme.Padding / 2), rectAlbumTitleText.Y - (_theme.Padding / 4), sizeAlbumTitle.Width + _theme.Padding, sizeAlbumTitle.Height + (_theme.Padding / 2));
// var brushTextBackground = new BasicBrush(new BasicColor(0, 0, 0, 30));
// context.DrawRectangle(rectArtistNameBackground, brushTextBackground, penTransparent);
// context.DrawRectangle(rectAlbumTitleBackground, brushTextBackground, penTransparent);
// }
if (displayArtistNameAndAlbumTitle)
{
context.DrawText(audioFile.ArtistName, rectArtistNameText, _theme.HeaderTextColor, _theme.FontNameAlbumArtTitle, _theme.FontSize + 2);
context.DrawText(audioFile.AlbumTitle, rectAlbumTitleText, _theme.HeaderTextColor, _theme.FontNameAlbumArtSubtitle, _theme.FontSize);
}
// Draw horizontal line to distinguish albums
// Part 1: Draw line over grid
pen = new BasicPen(new BasicBrush(new BasicColor(180, 180, 180)), 1);
context.DrawLine(new BasicPoint(_columns[0].Width, y), new BasicPoint(Frame.Width, y), pen);
// Part 2: Draw line over album art zone, in a lighter color
pen = new BasicPen(new BasicBrush(new BasicColor(115, 115, 115)), 1);
context.DrawLine(new BasicPoint(0, y), new BasicPoint(_columns[0].Width, y), pen);
}
}