20210516のC#に関する記事は3件です。

.NET 6のリリースまでに読んでおきたいアナウンスブログ一覧

.NET 6 のアナウンスに関する公式ブログ一覧を備忘録としてまとめる。 対象は https://devblogs.microsoft.com で公開されている記事です。 ※随時更新します .NET 6 プレビュー版 Announcing .NET 6 Preview 1 | .NET Blog Announcing .NET 6 Preview 2 | .NET Blog Announcing .NET 6 Preview 3 | .NET Blog ASP.NET Core プレビュー版 ASP.NET Core updates in .NET 6 Preview 1 | ASP.NET Blog ASP.NET Core updates in .NET 6 Preview 2 | ASP.NET Blog ASP.NET Core updates in .NET 6 Preview 3 | ASP.NET Blog Entity Framework Core プレビュー版 The Plan for Entity Framework Core 6.0 | .NET Blog Announcing Entity Framework Core 6.0 Preview 1 | .NET Blog Announcing Entity Framework Core 6.0 Preview 2 | .NET Blog
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

C# - AForge.NETを使って動画を生成する(画像のみ)

※VisualStudio不使用の環境であるため、VisualStudioを使用する場合は参考サイト等を参照ください。 やったこと 画像を生成し、AForge.NETを使って動画(.avi ファイル)を作成しました。 ※音声はAForge.NETでは結合できないようなので、AviUtlなどのツールを使って別途合成が必要です。 動的リンクの注意点 exeと同じフォルダ階層に dll (今回はAForge.dll と AForge.Video.dll と AForge.Video.VFW.dll) をおいてください。 そうしないと実行時に下記のエラーがでます。 ハンドルされていない例外: System.IO.FileNotFoundException: ファイルまたはアセンブリ 'AForge.Video.VFW, Version=2.2.4.0, Culture=neutral, PublicKeyToken=xxxxxxxxxxxxxxxx'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。 ソースコード AviEnc.cs using System; using System.Drawing; class AviEnc { static readonly int FrameRate = 15; // 1秒あたりのフレーム数を指定する static readonly int MovieWidth = 800; static readonly int MovieHeight = 600; [STAThread] static void Main(string[] args) { var writer = new AForge.Video.VFW.AVIWriter(); writer.Codec = "MSVC"; writer.FrameRate = FrameRate; writer.Open("out.avi", MovieWidth, MovieHeight); var font = new Font("Arial", 72.0f); var bmp = new Bitmap(MovieWidth, MovieHeight); var g = Graphics.FromImage(bmp); // 60秒分のフレームを作成 for ( int i=0; i<60*FrameRate; i++ ) { g.FillRectangle(Brushes.Black, 0, 0, MovieWidth, MovieHeight); g.DrawString(i.ToString(), font, Brushes.White, 10, 100); writer.AddFrame(bmp); // フレームを追加 } g.Dispose(); writer.Close(); } } cscでのコンパイル方法 csc /r:AForge.Video.VFW.dll AviEnc.cs Aviファイルに関する注意点 動画再生ソフトによってはAviファイルをうまく再生できないケースがあるため、AviUtlなどのツールを使って別のフォーマット(mp4など)への変換が必要となる場合があります。 参考サイト [VB/C#] Bitmap から動画生成 – プログラミング生放送 AForge.NET :: Framework Downloads AVIファイルフォーマット 参考サイト(AviUtl関連) AviUtlのお部屋 AviUtl初心者が最初に読むべきページ【導入から使い方まで】 | AviUtlの易しい使い方
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

C# 文字の色を部分的に変えて描画する

やりたいこと カラオケの字幕のような感じで描画する。 画面キャプチャ ソースコード using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Drawing.Text; using System.Windows.Forms; class DrawStrSample : Form { static readonly int W = 400; static readonly int H = 200; PictureBox pct; DrawStrSample() { ClientSize = new Size(W,H); Controls.Add(pct = new PictureBox(){ Size = new Size(W,H), Image = new Bitmap(W,H), }); Load += (s,e)=>{Draw("てすと");}; } void Draw(string text) { var g = Graphics.FromImage(pct.Image); var rectDraw = new Rectangle(0, 0, W, H); int leftPartWitdh = (int)(rectDraw.Width * 0.45); // 左側用と右側用の、色と描画領域 Brush[] brush = { new SolidBrush(Color.Blue) , new SolidBrush(Color.Gray) }; Pen[] pen = { new Pen(Color.Blue,3.0f), new Pen(Color.Gray,3.0f) }; // 表示確認用 Rectangle[] rectClip = { new Rectangle(rectDraw.X, rectDraw.Y, leftPartWitdh, rectDraw.Height), new Rectangle(rectDraw.X + leftPartWitdh, rectDraw.Y, rectDraw.Width - leftPartWitdh, rectDraw.Height) }; // g.FillRectangle(Brushes.Gray, rectDraw); // DrawStringにアンチエイリアスを適用する // g.TextRenderingHint = TextRenderingHint.AntiAlias; // アンチエイリアスを適用する g.SmoothingMode = SmoothingMode.HighQuality; var gp = new GraphicsPath(); var ff = new FontFamily("MS ゴシック"); var sf = new StringFormat(); sf.Alignment = StringAlignment.Center; // String, FontFamily, fontStyle, emSize, layoutRect, StringFormat gp.AddString(text, ff, 0, 100, rectDraw, sf); // 左右をクリップを切り替えながら、2度描画する for ( int i=0; i<2; i++ ) { g.SetClip(rectClip[i]); //g.DrawString(text, font, brush[i], rectDraw , sf); //文字列の中を塗りつぶす g.FillPath(brush[i], gp); g.DrawRectangle(pen[i], rectClip[i]); // 確認用 } // clipを元に戻す g.SetClip(rectDraw); //文字列の縁を描画する g.DrawPath(Pens.Black, gp); g.Dispose(); } [STAThread] static void Main(string[] args) { Application.Run(new DrawStrSample()); } } 参考サイト 「C#の画像作成で文字を部分的に色を変えたい」(1) Insider.NET - @IT .NET GraphicsPath.AddStringで縁取り文字を描きたい - Qiita 文字列を縁取りをして描画する - .NET Tips (VB.NET,C#...) アンチエイリアス処理をして描画する - .NET Tips (VB.NET,C#...) Graphics.SetClip Method (System.Drawing) | Microsoft Docs GraphicsPath.AddString Method (System.Drawing.Drawing2D) | Microsoft Docs
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む