Last active
May 10, 2019 12:31
Star
You must be signed in to star a gist
20190510-01
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//再生イベント時に呼び出されるメソッド | |
void iTunes_OnPlayerPlayEvent(object iTrack) | |
{ | |
//再生中のトラック情報を取得 | |
IITTrack track = (IITTrack)iTrack; | |
//ラベル用テキストを設定 | |
AlbumName = track.Album; | |
TrackInfo = track.TrackNumber + " / " + track.TrackCount; | |
Artist = track.Artist; | |
TrackName = track.Name; | |
//主コメントに送信 | |
if (_host != null) | |
{ | |
_host.SendOwnerComment(MainComment.Text); | |
} | |
//アートワークコレクションを取得 | |
IITArtworkCollection artwork = track.Artwork; | |
if (artwork != null && artwork.Count != 0) | |
{ | |
int artworkCount = 0; | |
foreach (IITArtwork a in artwork) | |
{ | |
//ぶっちゃけアートワークは1個でいいので先頭だけを使用 | |
artworkCount++; | |
if (artworkCount > 1) break; | |
//フォーマットに応じて保存先パスの拡張子を変更 | |
String ext; | |
if (a.Format == ITArtworkFormat.ITArtworkFormatJPEG) | |
ext = "jpg"; | |
else if (a.Format == ITArtworkFormat.ITArtworkFormatBMP) | |
ext = "bmp"; | |
else if (a.Format == ITArtworkFormat.ITArtworkFormatPNG) | |
ext = "png"; | |
else //フォーマット不明であればこの後の処理は行わない(稀) | |
{ | |
break; | |
} | |
ArtworkPath = System.Environment.CurrentDirectory + "\\artwork." + ext; | |
//アートワークを取得して保存 | |
a.SaveArtworkToFile(ArtworkPath); | |
//保存したアートワークを取得(ファイルに落とさないと取れないから) | |
Bitmap AlbumArtContent = new Bitmap(ArtworkPath); | |
//スケールを計算 | |
float scale_w = ((float)AlbumArtContent.Size.Width / ArtworkImageBox.Width), scale_h = ((float)AlbumArtContent.Size.Height / ArtworkImageBox.Height); | |
float scale = (scale_w > scale_h) ? (1 / scale_w) : (1 / scale_h); | |
//描画用に大きい方のスケールに合わせてリサイズ | |
Bitmap canvas = new Bitmap(ArtworkImageBox.Width, ArtworkImageBox.Height); | |
Graphics g = Graphics.FromImage(canvas); | |
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; | |
g.DrawImage(AlbumArtContent, 0, 0, (AlbumArtContent.Size.Width * scale), (AlbumArtContent.Size.Height * scale)); | |
ArtworkImageBox.Image = canvas; | |
//もしiTunesから取ったアートワークであれば | |
//落とし込んだアートワークを埋め込むボタンを許可する | |
if (a.IsDownloadedArtwork) | |
{ | |
BeginInvoke((MethodInvoker)delegate | |
{ | |
this.EmbedArtworkInfoLabel.Text = "Embed Artwork?"; | |
this.EmbedArtworkButton.Enabled = true; | |
this.artwork = a; | |
}); | |
} | |
else | |
{ | |
BeginInvoke((MethodInvoker)delegate | |
{ | |
this.EmbedArtworkInfoLabel.Text = "Artwork has been embedded."; | |
this.EmbedArtworkButton.Enabled = false; | |
this.artwork = null; | |
}); | |
} | |
//アルバムアートのビットマップを破棄 | |
AlbumArtContent.Dispose(); | |
} | |
} | |
//アートワークが存在しない場合はアートワークが存在しない旨を表示 | |
else | |
{ | |
Bitmap canvas = new Bitmap(ArtworkImageBox.Width, ArtworkImageBox.Height); | |
Graphics g = Graphics.FromImage(canvas); | |
g.DrawString("No Artwork!", new Font(FontFamily.GenericSansSerif, 14, GraphicsUnit.Point), Brushes.Black, 75, 111); | |
ArtworkImageBox.Image = canvas; | |
//アートワーク埋め込みは許可しない | |
BeginInvoke((MethodInvoker)delegate | |
{ | |
this.EmbedArtworkInfoLabel.Text = "Artwork Not found."; | |
this.EmbedArtworkButton.Enabled = false; | |
this.artwork = null; | |
}); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment