private void PaintAlbum(PaintEventArgs e, SongListViewItem item, SolidBrush textBrush, int x, int y, int size) { e.Graphics.DrawImage(item.AlbumArt, x, y, size, size); item.AlbumRectangle = Rectangle.Ceiling(new RectangleF(x, y, size, size)); var rect = new RectangleF(x, y + size, size, this.Font.Height); e.Graphics.DrawString(item.SongInfo.Album, this.Font, textBrush, rect); rect.Offset(0, this.Font.Height); e.Graphics.DrawString(item.SongInfo.AlbumArtist, this.Font, textBrush, rect); }
private void CreateItems() { _ticker = new Ticker { Width = 100, Dock = DockStyle.Bottom, ForeColor = Color.Red, FireWhileSliding = true, Duration = _dataSource.Length - 1 }; _ticker.PositionChanged += new EventHandler(Ticker_PositionChanged); this.Controls.Add(_ticker); System.Diagnostics.Debug.WriteLine($"Ticker '{nameof(_ticker)}' has been initialized."); Invalidate(true); MethodInvoker doWork = delegate { DisposeItems(); _items = new List <SongListViewItem>(); if (_dataSource == null || _dataSource.Length == 0) { return; } string lastAlbum = string.Empty; SongListViewItem prevItem = null; int index = 0; foreach (SongInfo info in _dataSource) { //if (index > 50) break; string album = info.Album; if (string.IsNullOrEmpty(album)) { album = "Unknown Album"; } if (lastAlbum != album) { var item = new SongListViewItem(); item.SongInfo = info; item.AlbumItem = item; item.PreviousItem = prevItem; if (prevItem != null) { prevItem.NextItem = item; } prevItem = item; item.IsStartOfNewAlbum = true; item.Index = index; if (info.HasFrontCover) { item.AlbumArt = info.GetFrontCover(100, 100); } else { _loader.LoadAlbumArt(item, info.FileName, 100, 100); } //item.AlbumArt = AlbumArtHelper.GetAlbumArt(info.FileName, 100, 100); lastAlbum = album; _items.Add(item); index += 1; } } _ticker.Duration = _items.Count - 1; _ticker.SetPosition(_ticker.Position); this.Invoke((MethodInvoker) delegate { Invalidate(true); }); }; doWork.BeginInvoke(null, null); }