<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C#</title><link>http://blogs.wankuma.com/strangeworker/category/2084.aspx</link><description>C#関連</description><managingEditor>strangeworker@wankuma.com</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>strangeworker@wankuma.com</dc:creator><title>コマンドプロンプトで動くアナログ時計を作る　その2</title><link>http://blogs.wankuma.com/strangeworker/archive/2009/03/11/169528.aspx</link><pubDate>Wed, 11 Mar 2009 22:08:00 GMT</pubDate><guid>http://blogs.wankuma.com/strangeworker/archive/2009/03/11/169528.aspx</guid><wfw:comment>http://blogs.wankuma.com/strangeworker/comments/169528.aspx</wfw:comment><comments>http://blogs.wankuma.com/strangeworker/archive/2009/03/11/169528.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/strangeworker/comments/commentRss/169528.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/strangeworker/services/trackbacks/169528.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://strangeworker.wankuma.com/site/special/2008/03/2_1372C/image.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="242" alt="image" src="http://strangeworker.wankuma.com/site/special/2008/03/2_1372C/image_thumb.png" width="233" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;見た目じゃない部分を修正したので、見た目は変わりません。&lt;/p&gt; &lt;p&gt;修正内容の肝は一つ前のブログのコメントでご指摘いただいた、Graphicsの開放と、&lt;/p&gt; &lt;p&gt;スレッドの制御部分です。以下に修正版を載せます。&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Diagnostics;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Drawing;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Drawing.Drawing2D;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Threading;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Security.AccessControl;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication93&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; MAX_SIZE = 110;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; DRAW_START = 40;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; DIGITAL_TIME_TOP = 65;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; FONT_SIZE = 15;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; LONG_SCALE = 40;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; SHORT_SCALE = 35;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; SCALE_LENGTH = 45;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; CIRCLE_WIDTH = 3;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; WINDOW_HEIGHT = 10;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; WINDOW_WIDTH = 24;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; FONT_NAME = &lt;span class="str"&gt;"ＭＳ ゴシック"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;const&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; TIME_FORMAT = &lt;span class="str"&gt;"HH:mm:ss"&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// メイン&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="args"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;            &lt;span class="rem"&gt;// ウィンドウサイズを適切に設定&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            Console.WindowHeight = WINDOW_HEIGHT;&lt;/pre&gt;&lt;pre&gt;            Console.WindowWidth = WINDOW_WIDTH;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="rem"&gt;// 時計描画スレッド&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            var manualReset = &lt;span class="kwrd"&gt;new&lt;/span&gt; ManualResetEvent(&lt;span class="kwrd"&gt;false&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;            var thread = &lt;span class="kwrd"&gt;new&lt;/span&gt; Thread(DrawClock);&lt;/pre&gt;&lt;pre class="alt"&gt;            thread.Start(manualReset);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;while&lt;/span&gt; (&lt;span class="kwrd"&gt;true&lt;/span&gt;)&lt;/pre&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;                Console.Write(&lt;span class="str"&gt;"終了しますか？[Y/N] : "&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (&lt;span class="str"&gt;"Y"&lt;/span&gt; == Console.ReadLine().ToUpper())&lt;/pre&gt;&lt;pre class="alt"&gt;                {&lt;/pre&gt;&lt;pre&gt;                    manualReset.Set();&lt;/pre&gt;&lt;pre class="alt"&gt;                    thread.Join();&lt;/pre&gt;&lt;pre&gt;                    &lt;span class="kwrd"&gt;break&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;                }&lt;/pre&gt;&lt;pre&gt;                &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                {&lt;/pre&gt;&lt;pre&gt;                    Console.CursorTop = 0;&lt;/pre&gt;&lt;pre class="alt"&gt;                    Console.Clear();&lt;/pre&gt;&lt;pre&gt;                }&lt;/pre&gt;&lt;pre class="alt"&gt;            }&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// 時計描画&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DrawClock(&lt;span class="kwrd"&gt;object&lt;/span&gt; obj)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// コンソールのウィンドウハンドルから描画クラス取得&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;            var process = Process.GetProcesses().ToList().Where(p =&amp;gt; p.MainWindowTitle == Console.Title).SingleOrDefault();&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var g = Graphics.FromHwnd(process.MainWindowHandle))&lt;/pre&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;                &lt;span class="rem"&gt;// チラつき防止のためのバッファ領域&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;                var msGothicFont = &lt;span class="kwrd"&gt;new&lt;/span&gt; Font(FONT_NAME, FONT_SIZE, FontStyle.Bold, GraphicsUnit.Pixel);&lt;/pre&gt;&lt;pre class="alt"&gt;                var fontSize = g.MeasureString(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Empty, msGothicFont);&lt;/pre&gt;&lt;pre&gt;                var bmp = &lt;span class="kwrd"&gt;new&lt;/span&gt; Bitmap(MAX_SIZE + CIRCLE_WIDTH, MAX_SIZE + CIRCLE_WIDTH + DIGITAL_TIME_TOP + Convert.ToInt32(fontSize.Height));&lt;/pre&gt;&lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (var gBuffer = Graphics.FromImage(bmp))&lt;/pre&gt;&lt;pre&gt;                {&lt;/pre&gt;&lt;pre class="alt"&gt;                    &lt;span class="rem"&gt;// 座標系の原点を変える&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;                    gBuffer.TranslateTransform((MAX_SIZE + CIRCLE_WIDTH) / 2, (MAX_SIZE + CIRCLE_WIDTH) / 2, MatrixOrder.Append);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;                    var center = &lt;span class="kwrd"&gt;new&lt;/span&gt; Point(0, 0);&lt;/pre&gt;&lt;pre class="alt"&gt;                    var r = MAX_SIZE / 2;&lt;/pre&gt;&lt;pre&gt;                    var manualReset = obj &lt;span class="kwrd"&gt;as&lt;/span&gt; WaitHandle; &lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;                    &lt;span class="kwrd"&gt;while&lt;/span&gt; (!manualReset.WaitOne(1000))&lt;/pre&gt;&lt;pre class="alt"&gt;                    {&lt;/pre&gt;&lt;pre&gt;                        var time = DateTime.Now;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;                        &lt;span class="rem"&gt;// 時計の部品を描画する&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                        DrawClockBase(gBuffer, time);&lt;/pre&gt;&lt;pre&gt;                        DrawSecondLine(gBuffer, time, r, center);&lt;/pre&gt;&lt;pre class="alt"&gt;                        DrawMinuteLine(gBuffer, time, r, center);&lt;/pre&gt;&lt;pre&gt;                        DrawHourLine(gBuffer, time, r, center);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;                        &lt;span class="rem"&gt;// 実描画&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                        g.DrawImage(bmp, &lt;span class="kwrd"&gt;new&lt;/span&gt; Point(DRAW_START, DRAW_START));&lt;/pre&gt;&lt;pre&gt;                    }&lt;/pre&gt;&lt;pre class="alt"&gt;                    manualReset.Close();&lt;/pre&gt;&lt;pre&gt;                }&lt;/pre&gt;&lt;pre class="alt"&gt;            }&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// 秒針描画&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="gBuffer"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="time"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="r"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="center"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DrawSecondLine(Graphics gBuffer, DateTime time, &lt;span class="kwrd"&gt;int&lt;/span&gt; r, Point center)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var bluePen = &lt;span class="kwrd"&gt;new&lt;/span&gt; Pen(Color.AliceBlue, 1))&lt;/pre&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;                var secAng = 2.0f * Math.PI * time.Second / 60.0f;&lt;/pre&gt;&lt;pre&gt;                var secHandLength = Convert.ToInt32(0.9f * r);&lt;/pre&gt;&lt;pre class="alt"&gt;                var secHand = &lt;span class="kwrd"&gt;new&lt;/span&gt; Point(Convert.ToInt32(secHandLength * Math.Sin(secAng)), Convert.ToInt32(-secHandLength * Math.Cos(secAng)));&lt;/pre&gt;&lt;pre&gt;                gBuffer.DrawLine(bluePen, center, secHand);&lt;/pre&gt;&lt;pre class="alt"&gt;            }&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// 分針描画&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="gBuffer"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="time"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="r"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="center"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DrawMinuteLine(Graphics gBuffer, DateTime time, &lt;span class="kwrd"&gt;int&lt;/span&gt; r, Point center)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var greenPen = &lt;span class="kwrd"&gt;new&lt;/span&gt; Pen(Color.LightGreen, 2))&lt;/pre&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;                var minAng = 2.0f * Math.PI * (time.Minute + time.Second / 60.0f) / 60.0f;&lt;/pre&gt;&lt;pre&gt;                var minHandLength = Convert.ToInt32(0.7f * r);&lt;/pre&gt;&lt;pre class="alt"&gt;                var minHand = &lt;span class="kwrd"&gt;new&lt;/span&gt; Point(Convert.ToInt32(minHandLength * Math.Sin(minAng)), Convert.ToInt32(-minHandLength * Math.Cos(minAng)));&lt;/pre&gt;&lt;pre&gt;                gBuffer.DrawLine(greenPen, center, minHand);&lt;/pre&gt;&lt;pre class="alt"&gt;            }&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// 時針描画&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="gBuffer"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="time"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="r"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="center"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DrawHourLine(Graphics gBuffer, DateTime time, &lt;span class="kwrd"&gt;int&lt;/span&gt; r, Point center)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var redPen = &lt;span class="kwrd"&gt;new&lt;/span&gt; Pen(Color.LightPink, 2))&lt;/pre&gt;&lt;pre&gt;            {&lt;/pre&gt;&lt;pre class="alt"&gt;                var hourAng = 2.0f * Math.PI * (time.Hour + time.Minute / 60.0f) / 12.0f;&lt;/pre&gt;&lt;pre&gt;                var hourHandLength = Convert.ToInt32(0.5f * r);&lt;/pre&gt;&lt;pre class="alt"&gt;                var hourHand = &lt;span class="kwrd"&gt;new&lt;/span&gt; Point(Convert.ToInt32(hourHandLength * Math.Sin(hourAng)), Convert.ToInt32(-hourHandLength * Math.Cos(hourAng)));&lt;/pre&gt;&lt;pre&gt;                gBuffer.DrawLine(redPen, center, hourHand);&lt;/pre&gt;&lt;pre class="alt"&gt;            }&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// 時計の針以外を描画&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="g"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DrawClockBase(Graphics gBuffer, DateTime time)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;            &lt;span class="rem"&gt;// 外円&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            DrawCircle(gBuffer);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// 目盛り&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;            DrawScale(gBuffer);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="rem"&gt;// デジタル時計&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            DrawDigitalTime(gBuffer, time);&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// 外円描画&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="gBuffer"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DrawCircle(Graphics gBuffer)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var circlePen = &lt;span class="kwrd"&gt;new&lt;/span&gt; Pen(Color.AliceBlue, CIRCLE_WIDTH))&lt;/pre&gt;&lt;pre class="alt"&gt;            {&lt;/pre&gt;&lt;pre&gt;                gBuffer.Clear(Color.Black);&lt;/pre&gt;&lt;pre class="alt"&gt;                gBuffer.FillEllipse(Brushes.AliceBlue, -2.5f, -2.5f, 5f, 5f);&lt;/pre&gt;&lt;pre&gt;                gBuffer.DrawEllipse(circlePen, -MAX_SIZE / 2, -MAX_SIZE / 2, MAX_SIZE, MAX_SIZE);&lt;/pre&gt;&lt;pre class="alt"&gt;            }&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// 目盛り描画&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="gBuffer"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DrawScale(Graphics gBuffer)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;            var msGothicFont = &lt;span class="kwrd"&gt;new&lt;/span&gt; Font(FONT_NAME, FONT_SIZE, FontStyle.Bold, GraphicsUnit.Pixel);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (var scalePen = &lt;span class="kwrd"&gt;new&lt;/span&gt; Pen(Color.Aqua, 1))&lt;/pre&gt;&lt;pre class="alt"&gt;            {&lt;/pre&gt;&lt;pre&gt;                Enumerable.Range(1, 60).ToList().ForEach(i =&amp;gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                {&lt;/pre&gt;&lt;pre&gt;                    var angle = i * 6 * (Math.PI / 180);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;                    &lt;span class="rem"&gt;// 見易いように5目盛りごとに長さを変える&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                    var length = 0 == i % 5 ? SHORT_SCALE : LONG_SCALE;&lt;/pre&gt;&lt;pre&gt;                    var x = Convert.ToInt32(Math.Sin(angle) * length);&lt;/pre&gt;&lt;pre class="alt"&gt;                    var y = -Convert.ToInt32(Math.Cos(angle) * length);&lt;/pre&gt;&lt;pre&gt;                    var x1 = Convert.ToInt32(Math.Sin(angle) * SCALE_LENGTH);&lt;/pre&gt;&lt;pre class="alt"&gt;                    var y1 = -Convert.ToInt32(Math.Cos(angle) * SCALE_LENGTH);&lt;/pre&gt;&lt;pre&gt;                    gBuffer.DrawLine(scalePen, x, y, x1, y1);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;                    &lt;span class="rem"&gt;// 5目盛りごとに数字を表示&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;                    &lt;span class="kwrd"&gt;if&lt;/span&gt; (0 == i % 5)&lt;/pre&gt;&lt;pre&gt;                    {&lt;/pre&gt;&lt;pre class="alt"&gt;                        var timeText = (i / 5).ToString();&lt;/pre&gt;&lt;pre&gt;                        var fontSize = gBuffer.MeasureString(timeText, msGothicFont);&lt;/pre&gt;&lt;pre class="alt"&gt;                        gBuffer.DrawString(timeText, msGothicFont, Brushes.White, &lt;span class="kwrd"&gt;new&lt;/span&gt; PointF(x1 - fontSize.Width / 2, y1 - fontSize.Height / 2));&lt;/pre&gt;&lt;pre&gt;                    }&lt;/pre&gt;&lt;pre class="alt"&gt;                });&lt;/pre&gt;&lt;pre&gt;            }&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// デジタル時計描画&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="gBuffer"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="rem"&gt;/// &amp;lt;param name="time"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; DrawDigitalTime(Graphics gBuffer, DateTime time)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;            var msGothicFont = &lt;span class="kwrd"&gt;new&lt;/span&gt; Font(FONT_NAME, FONT_SIZE, FontStyle.Bold, GraphicsUnit.Pixel);&lt;/pre&gt;&lt;pre class="alt"&gt;            var textSize = gBuffer.MeasureString(TIME_FORMAT, msGothicFont);&lt;/pre&gt;&lt;pre&gt;            gBuffer.DrawString(time.ToString(TIME_FORMAT), msGothicFont, Brushes.White, &lt;span class="kwrd"&gt;new&lt;/span&gt; PointF(-textSize.Width / 2, DIGITAL_TIME_TOP));&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;
&lt;p&gt;以上です。とっちゃんさんありがとうございました。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/strangeworker/aggbug/169528.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>strangeworker@wankuma.com</dc:creator><title>コマンドプロンプトで動くアナログ時計を作る</title><link>http://blogs.wankuma.com/strangeworker/archive/2009/03/11/169490.aspx</link><pubDate>Wed, 11 Mar 2009 02:00:00 GMT</pubDate><guid>http://blogs.wankuma.com/strangeworker/archive/2009/03/11/169490.aspx</guid><wfw:comment>http://blogs.wankuma.com/strangeworker/comments/169490.aspx</wfw:comment><comments>http://blogs.wankuma.com/strangeworker/archive/2009/03/11/169490.aspx#Feedback</comments><slash:comments>27</slash:comments><wfw:commentRss>http://blogs.wankuma.com/strangeworker/comments/commentRss/169490.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/strangeworker/services/trackbacks/169490.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://strangeworker.wankuma.com/site/special/2008/03/e8a693f4bd4f_1BF9/image.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=242 alt=image src="http://strangeworker.wankuma.com/site/special/2008/03/e8a693f4bd4f_1BF9/image_thumb.png" width=233 border=0&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;今までコマンドプロンプトでは描画処理をやったことがなかったので、試しに作ってみました。両方同じ動きをしますが、まずはソースを2種類載せます。 
&lt;P&gt;&lt;STRONG&gt;TimerCallbackを使用したバージョン.cs&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Collections.Generic;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Linq;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Text;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Threading;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Diagnostics;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Drawing;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Drawing.Drawing2D;&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;namespace&lt;/SPAN&gt; ConsoleApplication88&lt;/PRE&gt;&lt;PRE class=alt&gt;{&lt;/PRE&gt;&lt;PRE&gt;    &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; Program&lt;/PRE&gt;&lt;PRE class=alt&gt;    {&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; Main(&lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt;[] args)&lt;/PRE&gt;&lt;PRE class=alt&gt;        {&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// ウィンドウサイズを適切に設定&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            Console.WindowHeight = 10;&lt;/PRE&gt;&lt;PRE&gt;            Console.WindowWidth = 24;&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// 時計描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            var timer = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Timer(&lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; TimerCallback(DrawClock), &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;, 0, 1000);&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;while&lt;/SPAN&gt; (&lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;PRE&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;                Console.Write(&lt;SPAN class=str&gt;"終了しますか？[Y/N] : "&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;SPAN class=rem&gt;// 終了待ち&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;                &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (&lt;SPAN class=str&gt;"Y"&lt;/SPAN&gt; == Console.ReadLine().ToUpper())&lt;/PRE&gt;&lt;PRE class=alt&gt;                {&lt;/PRE&gt;&lt;PRE&gt;                    timer.Dispose();&lt;/PRE&gt;&lt;PRE class=alt&gt;                    &lt;SPAN class=kwrd&gt;break&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE&gt;                }&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;                {&lt;/PRE&gt;&lt;PRE class=alt&gt;                    Console.CursorTop = 0;&lt;/PRE&gt;&lt;PRE&gt;                    Console.Clear();&lt;/PRE&gt;&lt;PRE class=alt&gt;                }&lt;/PRE&gt;&lt;PRE&gt;            }&lt;/PRE&gt;&lt;PRE class=alt&gt;        }&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// コンソールのウィンドウプロセスを取得&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;RETURNS&gt;&lt;/RETURNS&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; Process GetConsoleProcess()&lt;/PRE&gt;&lt;PRE&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;foreach&lt;/SPAN&gt; (Process p &lt;SPAN class=kwrd&gt;in&lt;/SPAN&gt; Process.GetProcesses())&lt;/PRE&gt;&lt;PRE&gt;                &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (p.MainWindowTitle == Console.Title)&lt;/PRE&gt;&lt;PRE class=alt&gt;                    &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; p;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=kwrd&gt;return&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;null&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE class=alt&gt;        }&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// 時計描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawClock(&lt;SPAN class=kwrd&gt;object&lt;/SPAN&gt; state)&lt;/PRE&gt;&lt;PRE class=alt&gt;        {&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// コンソールのウィンドウハンドルから描画クラス取得&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            var g = Graphics.FromHwnd(GetConsoleProcess().MainWindowHandle);&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=rem&gt;// チラつき防止のためのバッファ領域&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;            var bmp = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Bitmap(150, 150);&lt;/PRE&gt;&lt;PRE class=alt&gt;            var gBuffer = Graphics.FromImage(bmp);&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=rem&gt;// 座標系の原点を変える&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;            gBuffer.TranslateTransform(110 / 2, 110 / 2, MatrixOrder.Append);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;            var center = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Point(0, 0);&lt;/PRE&gt;&lt;PRE class=alt&gt;            var time = DateTime.Now;&lt;/PRE&gt;&lt;PRE&gt;            var r = Math.Min(110, 110) / 2;&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// 時計の部品を描画する&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            DrawClockBase(gBuffer, time);&lt;/PRE&gt;&lt;PRE&gt;            DrawSecondLine(gBuffer, time, r, center);&lt;/PRE&gt;&lt;PRE class=alt&gt;            DrawMinuteLine(gBuffer, time, r, center);&lt;/PRE&gt;&lt;PRE&gt;            DrawHour(gBuffer, time, r, center);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// 実描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            g.DrawImage(bmp, &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Point(40, 30));&lt;/PRE&gt;&lt;PRE&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// 秒針描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="gBuffer"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="time"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="r"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="center"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawSecondLine(Graphics gBuffer, DateTime time, &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; r, Point center)&lt;/PRE&gt;&lt;PRE&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (var bluePen = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Pen(Color.AliceBlue, 1))&lt;/PRE&gt;&lt;PRE&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;                var secAng = 2.0f * Math.PI * time.Second / 60.0f;&lt;/PRE&gt;&lt;PRE&gt;                var secHandLength = Convert.ToInt32(0.9f * r);&lt;/PRE&gt;&lt;PRE class=alt&gt;                var secHand = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Point(Convert.ToInt32(secHandLength * Math.Sin(secAng)), Convert.ToInt32(-secHandLength * Math.Cos(secAng)));&lt;/PRE&gt;&lt;PRE&gt;                gBuffer.DrawLine(bluePen, center, secHand);&lt;/PRE&gt;&lt;PRE class=alt&gt;            }&lt;/PRE&gt;&lt;PRE&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// 分針描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="gBuffer"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="time"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="r"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="center"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawMinuteLine(Graphics gBuffer, DateTime time, &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; r, Point center)&lt;/PRE&gt;&lt;PRE&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (var greenPen = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Pen(Color.LightGreen, 2))&lt;/PRE&gt;&lt;PRE&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;                var minAng = 2.0f * Math.PI * (time.Minute + time.Second / 60.0f) / 60.0f;&lt;/PRE&gt;&lt;PRE&gt;                var minHandLength = Convert.ToInt32(0.7f * r);&lt;/PRE&gt;&lt;PRE class=alt&gt;                var minHand = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Point(Convert.ToInt32(minHandLength * Math.Sin(minAng)), Convert.ToInt32(-minHandLength * Math.Cos(minAng)));&lt;/PRE&gt;&lt;PRE&gt;                gBuffer.DrawLine(greenPen, center, minHand);&lt;/PRE&gt;&lt;PRE class=alt&gt;            }&lt;/PRE&gt;&lt;PRE&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// 時針描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="gBuffer"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="time"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="r"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="center"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawHour(Graphics gBuffer, DateTime time, &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; r, Point center)&lt;/PRE&gt;&lt;PRE&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (var redPen = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Pen(Color.LightPink, 2))&lt;/PRE&gt;&lt;PRE&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;                var hourAng = 2.0f * Math.PI * (time.Hour + time.Minute / 60.0f) / 12.0f;&lt;/PRE&gt;&lt;PRE&gt;                var hourHandLength = Convert.ToInt32(0.5f * r);&lt;/PRE&gt;&lt;PRE class=alt&gt;                var hourHand = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Point(Convert.ToInt32(hourHandLength * Math.Sin(hourAng)), Convert.ToInt32(-hourHandLength * Math.Cos(hourAng)));&lt;/PRE&gt;&lt;PRE&gt;                gBuffer.DrawLine(redPen, center, hourHand);&lt;/PRE&gt;&lt;PRE class=alt&gt;            }&lt;/PRE&gt;&lt;PRE&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// 時計の針以外を描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="g"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawClockBase(Graphics gBuffer, DateTime time)&lt;/PRE&gt;&lt;PRE class=alt&gt;        {&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// 円&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (var circlePen = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Pen(Color.AliceBlue, 2))&lt;/PRE&gt;&lt;PRE&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;                gBuffer.Clear(Color.Black);&lt;/PRE&gt;&lt;PRE&gt;                gBuffer.FillEllipse(Brushes.AliceBlue, -2.5f, -2.5f, 5f, 5f);&lt;/PRE&gt;&lt;PRE class=alt&gt;                gBuffer.DrawEllipse(circlePen, -110 / 2, -110 / 2, 110, 110);&lt;/PRE&gt;&lt;PRE&gt;            }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// フォント指定&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            var msGothicFont = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Font(&lt;SPAN class=str&gt;"ＭＳ ゴシック"&lt;/SPAN&gt;, 15, FontStyle.Bold, GraphicsUnit.Pixel);&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=rem&gt;// 目盛り&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (var scalePen = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Pen(Color.Aqua, 1))&lt;/PRE&gt;&lt;PRE class=alt&gt;            {&lt;/PRE&gt;&lt;PRE&gt;                Enumerable.Range(1, 60).ToList().ForEach(i =&amp;gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                {&lt;/PRE&gt;&lt;PRE&gt;                    var k = i * 6 * (Math.PI / 180);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;                    &lt;SPAN class=rem&gt;// 見易いように5目盛りごとに長さを変える&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                    var length = 0 == i % 5 ? 35 : 40;&lt;/PRE&gt;&lt;PRE&gt;                    var x = Convert.ToInt32(Math.Sin(k) * length);&lt;/PRE&gt;&lt;PRE class=alt&gt;                    var y = -Convert.ToInt32(Math.Cos(k) * length);&lt;/PRE&gt;&lt;PRE&gt;                    var x1 = Convert.ToInt32(Math.Sin(k) * 45);&lt;/PRE&gt;&lt;PRE class=alt&gt;                    var y1 = -Convert.ToInt32(Math.Cos(k) * 45);&lt;/PRE&gt;&lt;PRE&gt;                    gBuffer.DrawLine(scalePen, x, y, x1, y1);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;                    &lt;SPAN class=rem&gt;// 5目盛りごとに数字を表示&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (0 == i % 5)&lt;/PRE&gt;&lt;PRE&gt;                    {&lt;/PRE&gt;&lt;PRE class=alt&gt;                        var timeText = (i / 5).ToString();&lt;/PRE&gt;&lt;PRE&gt;                        var fontSize = gBuffer.MeasureString(timeText, msGothicFont);&lt;/PRE&gt;&lt;PRE class=alt&gt;                        gBuffer.DrawString(timeText, msGothicFont, Brushes.White, &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; PointF(x1 - fontSize.Width / 2, y1 - fontSize.Height / 2));&lt;/PRE&gt;&lt;PRE&gt;                    }&lt;/PRE&gt;&lt;PRE class=alt&gt;                });&lt;/PRE&gt;&lt;PRE&gt;            }&lt;/PRE&gt;&lt;PRE class=alt&gt;            var textSize = gBuffer.MeasureString(&lt;SPAN class=str&gt;"HH:mm:ss"&lt;/SPAN&gt;, msGothicFont);&lt;/PRE&gt;&lt;PRE&gt;            gBuffer.DrawString(time.ToString(&lt;SPAN class=str&gt;"HH:mm:ss"&lt;/SPAN&gt;), msGothicFont, Brushes.White, &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; PointF(-textSize.Width / 2, 65));&lt;/PRE&gt;&lt;PRE class=alt&gt;        }&lt;/PRE&gt;&lt;PRE&gt;    }&lt;/PRE&gt;&lt;PRE class=alt&gt;}&lt;/PRE&gt;
&lt;STYLE type=text/css&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/STYLE&gt;
&lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;Thread.Abortによる強制終了を行うバージョン.cs&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV class=csharpcode&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Diagnostics;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Drawing;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Drawing.Drawing2D;&lt;/PRE&gt;&lt;PRE class=alt&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Linq;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; System.Threading;&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;&lt;SPAN class=kwrd&gt;namespace&lt;/SPAN&gt; ConsoleApplication92&lt;/PRE&gt;&lt;PRE class=alt&gt;{&lt;/PRE&gt;&lt;PRE&gt;    &lt;SPAN class=kwrd&gt;class&lt;/SPAN&gt; Program&lt;/PRE&gt;&lt;PRE class=alt&gt;    {&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; MAX_SIZE = 110;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; DRAW_START = 40;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; DIGITAL_TIME_TOP = 65;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; FONT_SIZE = 15;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; LONG_SCALE = 40;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; SHORT_SCALE = 35;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; SCALE_LENGTH = 45;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; CIRCLE_WIDTH = 3;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; WINDOW_HEIGHT = 10;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; WINDOW_WIDTH = 24;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; FONT_NAME = &lt;SPAN class=str&gt;"ＭＳ ゴシック"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;const&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt; TIME_FORMAT = &lt;SPAN class=str&gt;"HH:mm:ss"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// メイン&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="args"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; Main(&lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt;[] args)&lt;/PRE&gt;&lt;PRE&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=rem&gt;// ウィンドウサイズを適切に設定&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;            Console.WindowHeight = WINDOW_HEIGHT;&lt;/PRE&gt;&lt;PRE class=alt&gt;            Console.WindowWidth = WINDOW_WIDTH;&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=rem&gt;// 時計描画スレッド&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;            var thread = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Thread(DrawClock);&lt;/PRE&gt;&lt;PRE class=alt&gt;            thread.Start();&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=rem&gt;// 入力待ちメインスレッド&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=kwrd&gt;while&lt;/SPAN&gt; (&lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;PRE class=alt&gt;            {&lt;/PRE&gt;&lt;PRE&gt;                Console.Write(&lt;SPAN class=str&gt;"終了しますか？[Y/N] : "&lt;/SPAN&gt;);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;                &lt;SPAN class=rem&gt;// 終了待ち&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (&lt;SPAN class=str&gt;"Y"&lt;/SPAN&gt; == Console.ReadLine().ToUpper())&lt;/PRE&gt;&lt;PRE&gt;                {&lt;/PRE&gt;&lt;PRE class=alt&gt;                    ThreadStop(thread);&lt;/PRE&gt;&lt;PRE&gt;                    thread.Join();&lt;/PRE&gt;&lt;PRE class=alt&gt;                    &lt;SPAN class=kwrd&gt;break&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;PRE&gt;                }&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;SPAN class=kwrd&gt;else&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;                {&lt;/PRE&gt;&lt;PRE class=alt&gt;                    Console.CursorTop = 0;&lt;/PRE&gt;&lt;PRE&gt;                    Console.Clear();&lt;/PRE&gt;&lt;PRE class=alt&gt;                }&lt;/PRE&gt;&lt;PRE&gt;            }&lt;/PRE&gt;&lt;PRE class=alt&gt;        }&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// スレッド中止&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="thread"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; ThreadStop(Thread thread)&lt;/PRE&gt;&lt;PRE&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;try&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;                thread.Abort();&lt;/PRE&gt;&lt;PRE&gt;            }&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;catch&lt;/SPAN&gt; (ThreadAbortException)&lt;/PRE&gt;&lt;PRE&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;SPAN class=rem&gt;// あえてスルーする&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;            }&lt;/PRE&gt;&lt;PRE class=alt&gt;        }&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// 時計描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawClock()&lt;/PRE&gt;&lt;PRE class=alt&gt;        {&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// コンソールのウィンドウハンドルから描画クラス取得&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            var process = Process.GetProcesses().ToList().Where(p =&amp;gt; p.MainWindowTitle == Console.Title).SingleOrDefault();&lt;/PRE&gt;&lt;PRE&gt;            var g = Graphics.FromHwnd(process.MainWindowHandle);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// チラつき防止のためのバッファ領域&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            var msGothicFont = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Font(FONT_NAME, FONT_SIZE, FontStyle.Bold, GraphicsUnit.Pixel);&lt;/PRE&gt;&lt;PRE&gt;            var fontSize = g.MeasureString(&lt;SPAN class=kwrd&gt;string&lt;/SPAN&gt;.Empty, msGothicFont);&lt;/PRE&gt;&lt;PRE class=alt&gt;            var bmp = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Bitmap(MAX_SIZE + CIRCLE_WIDTH, MAX_SIZE + CIRCLE_WIDTH + DIGITAL_TIME_TOP + Convert.ToInt32(fontSize.Height));&lt;/PRE&gt;&lt;PRE&gt;            var gBuffer = Graphics.FromImage(bmp);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// 座標系の原点を変える&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            gBuffer.TranslateTransform((MAX_SIZE + CIRCLE_WIDTH) / 2, (MAX_SIZE + CIRCLE_WIDTH) / 2, MatrixOrder.Append);&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;            var center = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Point(0, 0);&lt;/PRE&gt;&lt;PRE&gt;            var r = MAX_SIZE / 2;&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=kwrd&gt;while&lt;/SPAN&gt; (&lt;SPAN class=kwrd&gt;true&lt;/SPAN&gt;)&lt;/PRE&gt;&lt;PRE class=alt&gt;            {&lt;/PRE&gt;&lt;PRE&gt;                var time = DateTime.Now;&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;                &lt;SPAN class=rem&gt;// 時計の部品を描画する&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                DrawClockBase(gBuffer, time);&lt;/PRE&gt;&lt;PRE&gt;                DrawSecondLine(gBuffer, time, r, center);&lt;/PRE&gt;&lt;PRE class=alt&gt;                DrawMinuteLine(gBuffer, time, r, center);&lt;/PRE&gt;&lt;PRE&gt;                DrawHourLine(gBuffer, time, r, center);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;                &lt;SPAN class=rem&gt;// 実描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                g.DrawImage(bmp, &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Point(DRAW_START, DRAW_START));&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;                &lt;SPAN class=rem&gt;// 一秒置き&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;                Thread.Sleep(1000);&lt;/PRE&gt;&lt;PRE class=alt&gt;            }&lt;/PRE&gt;&lt;PRE&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// 秒針描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="gBuffer"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="time"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="r"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="center"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawSecondLine(Graphics gBuffer, DateTime time, &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; r, Point center)&lt;/PRE&gt;&lt;PRE&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (var bluePen = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Pen(Color.AliceBlue, 1))&lt;/PRE&gt;&lt;PRE&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;                var secAng = 2.0f * Math.PI * time.Second / 60.0f;&lt;/PRE&gt;&lt;PRE&gt;                var secHandLength = Convert.ToInt32(0.9f * r);&lt;/PRE&gt;&lt;PRE class=alt&gt;                var secHand = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Point(Convert.ToInt32(secHandLength * Math.Sin(secAng)), Convert.ToInt32(-secHandLength * Math.Cos(secAng)));&lt;/PRE&gt;&lt;PRE&gt;                gBuffer.DrawLine(bluePen, center, secHand);&lt;/PRE&gt;&lt;PRE class=alt&gt;            }&lt;/PRE&gt;&lt;PRE&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// 分針描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="gBuffer"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="time"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="r"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="center"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawMinuteLine(Graphics gBuffer, DateTime time, &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; r, Point center)&lt;/PRE&gt;&lt;PRE&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (var greenPen = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Pen(Color.LightGreen, 2))&lt;/PRE&gt;&lt;PRE&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;                var minAng = 2.0f * Math.PI * (time.Minute + time.Second / 60.0f) / 60.0f;&lt;/PRE&gt;&lt;PRE&gt;                var minHandLength = Convert.ToInt32(0.7f * r);&lt;/PRE&gt;&lt;PRE class=alt&gt;                var minHand = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Point(Convert.ToInt32(minHandLength * Math.Sin(minAng)), Convert.ToInt32(-minHandLength * Math.Cos(minAng)));&lt;/PRE&gt;&lt;PRE&gt;                gBuffer.DrawLine(greenPen, center, minHand);&lt;/PRE&gt;&lt;PRE class=alt&gt;            }&lt;/PRE&gt;&lt;PRE&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// 時針描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="gBuffer"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="time"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="r"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="center"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=kwrd&gt;private&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawHourLine(Graphics gBuffer, DateTime time, &lt;SPAN class=kwrd&gt;int&lt;/SPAN&gt; r, Point center)&lt;/PRE&gt;&lt;PRE&gt;        {&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (var redPen = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Pen(Color.LightPink, 2))&lt;/PRE&gt;&lt;PRE&gt;            {&lt;/PRE&gt;&lt;PRE class=alt&gt;                var hourAng = 2.0f * Math.PI * (time.Hour + time.Minute / 60.0f) / 12.0f;&lt;/PRE&gt;&lt;PRE&gt;                var hourHandLength = Convert.ToInt32(0.5f * r);&lt;/PRE&gt;&lt;PRE class=alt&gt;                var hourHand = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Point(Convert.ToInt32(hourHandLength * Math.Sin(hourAng)), Convert.ToInt32(-hourHandLength * Math.Cos(hourAng)));&lt;/PRE&gt;&lt;PRE&gt;                gBuffer.DrawLine(redPen, center, hourHand);&lt;/PRE&gt;&lt;PRE class=alt&gt;            }&lt;/PRE&gt;&lt;PRE&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// 時計の針以外を描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="g"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawClockBase(Graphics gBuffer, DateTime time)&lt;/PRE&gt;&lt;PRE class=alt&gt;        {&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// 外円&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            DrawCircle(gBuffer);&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;            &lt;SPAN class=rem&gt;// 目盛り&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;            DrawScale(gBuffer);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=rem&gt;// デジタル時計&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;            DrawDigitalTime(gBuffer, time);&lt;/PRE&gt;&lt;PRE&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// 外円描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="gBuffer"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawCircle(Graphics gBuffer)&lt;/PRE&gt;&lt;PRE class=alt&gt;        {&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (var circlePen = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Pen(Color.AliceBlue, CIRCLE_WIDTH))&lt;/PRE&gt;&lt;PRE class=alt&gt;            {&lt;/PRE&gt;&lt;PRE&gt;                gBuffer.Clear(Color.Black);&lt;/PRE&gt;&lt;PRE class=alt&gt;                gBuffer.FillEllipse(Brushes.AliceBlue, -2.5f, -2.5f, 5f, 5f);&lt;/PRE&gt;&lt;PRE&gt;                gBuffer.DrawEllipse(circlePen, -MAX_SIZE / 2, -MAX_SIZE / 2, MAX_SIZE, MAX_SIZE);&lt;/PRE&gt;&lt;PRE class=alt&gt;            }&lt;/PRE&gt;&lt;PRE&gt;        }&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// 目盛り描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="gBuffer"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawScale(Graphics gBuffer)&lt;/PRE&gt;&lt;PRE class=alt&gt;        {&lt;/PRE&gt;&lt;PRE&gt;            var msGothicFont = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Font(FONT_NAME, FONT_SIZE, FontStyle.Bold, GraphicsUnit.Pixel);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;            &lt;SPAN class=kwrd&gt;using&lt;/SPAN&gt; (var scalePen = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Pen(Color.Aqua, 1))&lt;/PRE&gt;&lt;PRE class=alt&gt;            {&lt;/PRE&gt;&lt;PRE&gt;                Enumerable.Range(1, 60).ToList().ForEach(i =&amp;gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                {&lt;/PRE&gt;&lt;PRE&gt;                    var angle = i * 6 * (Math.PI / 180);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;                    &lt;SPAN class=rem&gt;// 見易いように5目盛りごとに長さを変える&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                    var length = 0 == i % 5 ? SHORT_SCALE : LONG_SCALE;&lt;/PRE&gt;&lt;PRE&gt;                    var x = Convert.ToInt32(Math.Sin(angle) * length);&lt;/PRE&gt;&lt;PRE class=alt&gt;                    var y = -Convert.ToInt32(Math.Cos(angle) * length);&lt;/PRE&gt;&lt;PRE&gt;                    var x1 = Convert.ToInt32(Math.Sin(angle) * SCALE_LENGTH);&lt;/PRE&gt;&lt;PRE class=alt&gt;                    var y1 = -Convert.ToInt32(Math.Cos(angle) * SCALE_LENGTH);&lt;/PRE&gt;&lt;PRE&gt;                    gBuffer.DrawLine(scalePen, x, y, x1, y1);&lt;/PRE&gt;&lt;PRE class=alt&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE&gt;                    &lt;SPAN class=rem&gt;// 5目盛りごとに数字を表示&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;                    &lt;SPAN class=kwrd&gt;if&lt;/SPAN&gt; (0 == i % 5)&lt;/PRE&gt;&lt;PRE&gt;                    {&lt;/PRE&gt;&lt;PRE class=alt&gt;                        var timeText = (i / 5).ToString();&lt;/PRE&gt;&lt;PRE&gt;                        var fontSize = gBuffer.MeasureString(timeText, msGothicFont);&lt;/PRE&gt;&lt;PRE class=alt&gt;                        gBuffer.DrawString(timeText, msGothicFont, Brushes.White, &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; PointF(x1 - fontSize.Width / 2, y1 - fontSize.Height / 2));&lt;/PRE&gt;&lt;PRE&gt;                    }&lt;/PRE&gt;&lt;PRE class=alt&gt;                });&lt;/PRE&gt;&lt;PRE&gt;            }&lt;/PRE&gt;&lt;PRE class=alt&gt;        }&lt;/PRE&gt;&lt;PRE&gt;&amp;nbsp;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// デジタル時計描画&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;/SUMMARY&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="gBuffer"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE class=alt&gt;        &lt;SPAN class=rem&gt;/// &lt;PARAM name="time"&gt;&lt;/PARAM&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE&gt;        &lt;SPAN class=kwrd&gt;static&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;void&lt;/SPAN&gt; DrawDigitalTime(Graphics gBuffer, DateTime time)&lt;/PRE&gt;&lt;PRE class=alt&gt;        {&lt;/PRE&gt;&lt;PRE&gt;            var msGothicFont = &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; Font(FONT_NAME, FONT_SIZE, FontStyle.Bold, GraphicsUnit.Pixel);&lt;/PRE&gt;&lt;PRE class=alt&gt;            var textSize = gBuffer.MeasureString(TIME_FORMAT, msGothicFont);&lt;/PRE&gt;&lt;PRE&gt;            gBuffer.DrawString(time.ToString(TIME_FORMAT), msGothicFont, Brushes.White, &lt;SPAN class=kwrd&gt;new&lt;/SPAN&gt; PointF(-textSize.Width / 2, DIGITAL_TIME_TOP));&lt;/PRE&gt;&lt;PRE class=alt&gt;        }&lt;/PRE&gt;&lt;PRE&gt;    }&lt;/PRE&gt;&lt;PRE class=alt&gt;}&lt;/PRE&gt;&lt;/DIV&gt;
&lt;P&gt;基本構造はどちらも同じです。違うのはスレッドの扱いのみ。&lt;/P&gt;
&lt;P&gt;Thread.Abort版の方が無駄が少ないように思うので、もう少しいじってみようと思います。&lt;/P&gt;
&lt;P&gt;現時点ではここまで。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/strangeworker/aggbug/169490.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>strangeworker@wankuma.com</dc:creator><title>変数x,y,zの中で最大値が入った変数はどれなのか調べたい時、何かいい方法はありますか？</title><link>http://blogs.wankuma.com/strangeworker/archive/2009/02/18/168318.aspx</link><pubDate>Wed, 18 Feb 2009 02:13:00 GMT</pubDate><guid>http://blogs.wankuma.com/strangeworker/archive/2009/02/18/168318.aspx</guid><wfw:comment>http://blogs.wankuma.com/strangeworker/comments/168318.aspx</wfw:comment><comments>http://blogs.wankuma.com/strangeworker/archive/2009/02/18/168318.aspx#Feedback</comments><slash:comments>27</slash:comments><wfw:commentRss>http://blogs.wankuma.com/strangeworker/comments/commentRss/168318.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/strangeworker/services/trackbacks/168318.aspx</trackback:ping><description>&lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt; &lt;div class="csharpcode"&gt;ある程度素直に考えた結果。&lt;/div&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication65&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; x = 1, y = 4, z = 4;&lt;/pre&gt;&lt;pre&gt;            var list = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { x, y, z };&lt;/pre&gt;&lt;pre class="alt"&gt;            var max = list.Max();&lt;/pre&gt;&lt;pre&gt;            var dic = &lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary &amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; &lt;/pre&gt;&lt;pre class="alt"&gt;            { &lt;/pre&gt;&lt;pre&gt;                { &lt;span class="str"&gt;"x"&lt;/span&gt;, x }, &lt;/pre&gt;&lt;pre class="alt"&gt;                { &lt;span class="str"&gt;"y"&lt;/span&gt;, y },&lt;/pre&gt;&lt;pre&gt;                { &lt;span class="str"&gt;"z"&lt;/span&gt;, z }, &lt;/pre&gt;&lt;pre class="alt"&gt;            };&lt;/pre&gt;&lt;pre&gt;            dic.ToList().ForEach( o =&amp;gt; &lt;/pre&gt;&lt;pre class="alt"&gt;            {&lt;/pre&gt;&lt;pre&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; ( o.Value == max )&lt;/pre&gt;&lt;pre class="alt"&gt;                {&lt;/pre&gt;&lt;pre&gt;                    Console.WriteLine ( o.Key );   &lt;/pre&gt;&lt;pre class="alt"&gt;                }                                   &lt;/pre&gt;&lt;pre&gt;            });&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;            Console.Read();&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div class="csharpcode"&gt;考えすぎて頭がこんがらがった結果。&lt;/div&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.CodeDom.Compiler;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.CSharp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication66&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CompileInvoke&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main()&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;int&lt;/span&gt; x = 100, y = 4, z = 4;&lt;/pre&gt;&lt;pre&gt;            var list = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; { x, y, z };&lt;/pre&gt;&lt;pre class="alt"&gt;            var max = list.Max();&lt;/pre&gt;&lt;pre&gt;            var cscp = &lt;span class="kwrd"&gt;new&lt;/span&gt; CSharpCodeProvider(&lt;span class="kwrd"&gt;new&lt;/span&gt; Dictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt;() { { &lt;span class="str"&gt;"CompilerVersion"&lt;/span&gt;, &lt;span class="str"&gt;"v3.5"&lt;/span&gt; } });&lt;/pre&gt;&lt;pre class="alt"&gt;            var param = &lt;span class="kwrd"&gt;new&lt;/span&gt; CompilerParameters();&lt;/pre&gt;&lt;pre&gt;            param.GenerateInMemory = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre class="alt"&gt;            param.ReferencedAssemblies.Add(&lt;span class="str"&gt;"System.Core.dll"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;            param.ReferencedAssemblies.Add(&lt;span class="str"&gt;"System.Xml.Linq.dll"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;            var code = &lt;span class="str"&gt;@"&lt;/pre&gt;&lt;pre&gt;                using System;&lt;/pre&gt;&lt;pre class="alt"&gt;                using System.Collections.Generic;&lt;/pre&gt;&lt;pre&gt;                using System.Linq;&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;                public class Executer &lt;/pre&gt;&lt;pre class="alt"&gt;                {&lt;/pre&gt;&lt;pre&gt;                    public static void Main() &lt;/pre&gt;&lt;pre class="alt"&gt;                    {&lt;/pre&gt;&lt;pre&gt;                        var dic = new Dictionary &amp;lt;string, int&amp;gt; &lt;/pre&gt;&lt;pre class="alt"&gt;                        { &lt;/pre&gt;&lt;pre&gt;                            { "&lt;/span&gt;&lt;span class="str"&gt;"x"&lt;/span&gt;&lt;span class="str"&gt;", "&lt;/span&gt; + x + &lt;span class="str"&gt;@" }, &lt;/pre&gt;&lt;pre class="alt"&gt;                            { "&lt;/span&gt;&lt;span class="str"&gt;"y"&lt;/span&gt;&lt;span class="str"&gt;", "&lt;/span&gt; + y + &lt;span class="str"&gt;@" },&lt;/pre&gt;&lt;pre&gt;                            { "&lt;/span&gt;&lt;span class="str"&gt;"z"&lt;/span&gt;&lt;span class="str"&gt;", "&lt;/span&gt; + z + &lt;span class="str"&gt;@" }, &lt;/pre&gt;&lt;pre class="alt"&gt;                        };&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;                        dic.ToList().ForEach( o =&amp;gt; &lt;/pre&gt;&lt;pre&gt;                        {&lt;/pre&gt;&lt;pre class="alt"&gt;                            if ( o.Value == "&lt;/span&gt; + max + &lt;span class="str"&gt;@" )&lt;/pre&gt;&lt;pre&gt;                            {&lt;/pre&gt;&lt;pre class="alt"&gt;                                Console.WriteLine ( o.Key );   &lt;/pre&gt;&lt;pre&gt;                            }                                   &lt;/pre&gt;&lt;pre class="alt"&gt;                        });&lt;/pre&gt;&lt;pre&gt;                    }&lt;/pre&gt;&lt;pre class="alt"&gt;                }"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;            var cr = cscp.CompileAssemblyFromSource(param, code);&lt;/pre&gt;&lt;pre class="alt"&gt;            var asm = cr.CompiledAssembly;&lt;/pre&gt;&lt;pre&gt;            var type = asm.GetType(&lt;span class="str"&gt;"Executer"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;            var mi = type.GetMethod(&lt;span class="str"&gt;"Main"&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;            mi.Invoke(&lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;            Console.Read();&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;&lt;img src ="http://blogs.wankuma.com/strangeworker/aggbug/168318.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>strangeworker@wankuma.com</dc:creator><title>ベーシックなfor文について</title><link>http://blogs.wankuma.com/strangeworker/archive/2009/02/11/167943.aspx</link><pubDate>Wed, 11 Feb 2009 00:41:00 GMT</pubDate><guid>http://blogs.wankuma.com/strangeworker/archive/2009/02/11/167943.aspx</guid><wfw:comment>http://blogs.wankuma.com/strangeworker/comments/167943.aspx</wfw:comment><comments>http://blogs.wankuma.com/strangeworker/archive/2009/02/11/167943.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/strangeworker/comments/commentRss/167943.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/strangeworker/services/trackbacks/167943.aspx</trackback:ping><description>&lt;p&gt;今頃になって急いでLINQのことを調べたりしているのだけど、&lt;/p&gt; &lt;p&gt;なんだかどうやらシンプルなfor文&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; (var i = 1; i &amp;lt;=10; i++) &lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;...&lt;/pre&gt;&lt;pre&gt;}&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;は&lt;/p&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;Enumerable.Range(1, 10).ToList().ForEach(...)&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;
&lt;p&gt;のように書き換えることが出来ることに気付いた。&lt;/p&gt;
&lt;p&gt;すごい今更感。&lt;/p&gt;
&lt;p&gt;でもこうやって一歩一歩調べつつ覚えつつ&lt;/p&gt;
&lt;p&gt;経験を積むしかないんだよなぁ……。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/strangeworker/aggbug/167943.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>strangeworker@wankuma.com</dc:creator><title>課題？</title><link>http://blogs.wankuma.com/strangeworker/archive/2009/02/08/167729.aspx</link><pubDate>Sun, 08 Feb 2009 13:42:00 GMT</pubDate><guid>http://blogs.wankuma.com/strangeworker/archive/2009/02/08/167729.aspx</guid><wfw:comment>http://blogs.wankuma.com/strangeworker/comments/167729.aspx</wfw:comment><comments>http://blogs.wankuma.com/strangeworker/archive/2009/02/08/167729.aspx#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://blogs.wankuma.com/strangeworker/comments/commentRss/167729.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/strangeworker/services/trackbacks/167729.aspx</trackback:ping><description>&lt;p&gt;mixiのC#コミュニティにこんな書き込みがあった。&lt;/p&gt; &lt;p&gt;&amp;gt; ググったのですがよくわからず…&lt;img height="16" alt="たらーっ（汗）" src="http://img.mixi.jp/img/emoji/79.gif" width="16" border="0"&gt;すみません &lt;br&gt;&amp;gt; 1×1=1 &lt;br&gt;&amp;gt; 2×2=4 &lt;br&gt;&amp;gt; 3×3=9 &lt;br&gt;&amp;gt; . &lt;br&gt;&amp;gt; . &lt;br&gt;&amp;gt; . &lt;br&gt;&amp;gt; 9×9=81 &lt;br&gt;&amp;gt; というふうに表示させるにはどうしたらできますか？ &lt;div class="csharpcode"&gt;当然のようにこういう回答もあったのだけど、&lt;/div&gt; &lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;for&lt;/span&gt; (var i = 1; i &amp;lt; 10; i++) &lt;/pre&gt;&lt;pre&gt;　　Console.WriteLine(&lt;span class="str"&gt;"{0} × {0}={1}"&lt;/span&gt;, i,Math.Pow(i, 2));&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;こっちの回答の無駄さも好きだ。&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;
&lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;var l = &lt;span class="kwrd"&gt;new&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt;(); &lt;span class="kwrd"&gt;for&lt;/span&gt; (var i = 1; i &amp;lt;= 9; i++) l.Add(i); &lt;/pre&gt;&lt;pre&gt;var ret = l.Select(i =&amp;gt; { Console.WriteLine(&lt;span class="str"&gt;"{0} × {0}={1}"&lt;/span&gt;, i, Math.Pow(i, 2)); &lt;span class="kwrd"&gt;return&lt;/span&gt; 1; }); &lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var j &lt;span class="kwrd"&gt;in&lt;/span&gt; ret){}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;&lt;img src ="http://blogs.wankuma.com/strangeworker/aggbug/167729.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>strangeworker@wankuma.com</dc:creator><title>文字列変換ユーティリティ</title><link>http://blogs.wankuma.com/strangeworker/archive/2009/01/28/167028.aspx</link><pubDate>Wed, 28 Jan 2009 19:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/strangeworker/archive/2009/01/28/167028.aspx</guid><wfw:comment>http://blogs.wankuma.com/strangeworker/comments/167028.aspx</wfw:comment><comments>http://blogs.wankuma.com/strangeworker/archive/2009/01/28/167028.aspx#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.wankuma.com/strangeworker/comments/commentRss/167028.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/strangeworker/services/trackbacks/167028.aspx</trackback:ping><description>&lt;p&gt;&lt;/p&gt; &lt;div class="csharpcode"&gt;文字列が指定した方のTryParseに成功した場合はその値を、失敗した場合はnullを返す。TryParseをサポートしない場合は、NotSupportedException例外を発生させる。&lt;/div&gt; &lt;div class="csharpcode"&gt;&amp;nbsp;&lt;/div&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Util&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Nullable&amp;lt;T&amp;gt; ToNullable&amp;lt;T&amp;gt;( &lt;span class="kwrd"&gt;this&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt; ) &lt;span class="kwrd"&gt;where&lt;/span&gt; T : &lt;span class="kwrd"&gt;struct&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        var type = &lt;span class="kwrd"&gt;typeof&lt;/span&gt;( T );&lt;/pre&gt;&lt;pre&gt;        var types = &lt;span class="kwrd"&gt;new&lt;/span&gt;[] { &lt;span class="kwrd"&gt;typeof&lt;/span&gt;( &lt;span class="kwrd"&gt;string&lt;/span&gt; ), GetReferenceType( type ) };&lt;/pre&gt;&lt;pre class="alt"&gt;        var method = type.GetMethod( &lt;span class="str"&gt;"TryParse"&lt;/span&gt;, types );&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt;( &lt;span class="kwrd"&gt;null&lt;/span&gt; == method )&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; NotSupportedException();&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;        var parameters = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;object&lt;/span&gt;[] { &lt;span class="kwrd"&gt;value&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt; T() };&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt;( (&lt;span class="kwrd"&gt;bool&lt;/span&gt;)method.Invoke( &lt;span class="kwrd"&gt;null&lt;/span&gt;, parameters ) )&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; (T)parameters.Where( p =&amp;gt; p.GetType() == type ).Single();&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Type GetReferenceType&amp;lt;T&amp;gt;()&lt;/pre&gt;&lt;pre class="alt"&gt;    {&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; GetReferenceType( &lt;span class="kwrd"&gt;typeof&lt;/span&gt;( T ) );&lt;/pre&gt;&lt;pre class="alt"&gt;    }&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; Type GetReferenceType( Type type )&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; Type.GetType( type.FullName + &lt;span class="str"&gt;"&amp;amp;"&lt;/span&gt; );&lt;/pre&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;&lt;img src ="http://blogs.wankuma.com/strangeworker/aggbug/167028.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>strangeworker@wankuma.com</dc:creator><title>似非多重継承</title><link>http://blogs.wankuma.com/strangeworker/archive/2009/01/28/166976.aspx</link><pubDate>Wed, 28 Jan 2009 05:28:00 GMT</pubDate><guid>http://blogs.wankuma.com/strangeworker/archive/2009/01/28/166976.aspx</guid><wfw:comment>http://blogs.wankuma.com/strangeworker/comments/166976.aspx</wfw:comment><comments>http://blogs.wankuma.com/strangeworker/archive/2009/01/28/166976.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/strangeworker/comments/commentRss/166976.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/strangeworker/services/trackbacks/166976.aspx</trackback:ping><description>&lt;p&gt;Classの多重継承は当然認められていませんが、Interfaceは多重継承ができますよね。それに加えて、C#3.0以降は拡張メソッドが実装されており、かつ、それはInterfaceであっても適用可能なので、複雑なことはできませんが、単純な似非多重継承は行えます。Linq関連でバンバン使われているので当然ですね。&lt;/p&gt; &lt;p&gt;以下、適当なサンプル&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication50&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            var cls = &lt;span class="kwrd"&gt;new&lt;/span&gt; TestClass();&lt;/pre&gt;&lt;pre&gt;            Console.WriteLine(cls.Test1Execute());&lt;/pre&gt;&lt;pre class="alt"&gt;            Console.WriteLine(cls.Test2Execute());&lt;/pre&gt;&lt;pre&gt;            Console.Read();&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;pre&gt;    }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; TestClass : ITest1, ITest2 { }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; ITest1 { }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;interface&lt;/span&gt; ITest2 { }&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; Util&lt;/pre&gt;&lt;pre class="alt"&gt;    {&lt;/pre&gt;&lt;pre&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; Test1Execute(&lt;span class="kwrd"&gt;this&lt;/span&gt; ITest1 iTest1)&lt;/pre&gt;&lt;pre class="alt"&gt;        {&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; 5;&lt;/pre&gt;&lt;pre class="alt"&gt;        }&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Test2Execute(&lt;span class="kwrd"&gt;this&lt;/span&gt; ITest2 iTest2)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;"Test2"&lt;/span&gt;;&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;    }&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;&lt;img src ="http://blogs.wankuma.com/strangeworker/aggbug/166976.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>strangeworker@wankuma.com</dc:creator><title>複数の文字列から該当する単語の数を数える</title><link>http://blogs.wankuma.com/strangeworker/archive/2009/01/28/166973.aspx</link><pubDate>Wed, 28 Jan 2009 04:20:00 GMT</pubDate><guid>http://blogs.wankuma.com/strangeworker/archive/2009/01/28/166973.aspx</guid><wfw:comment>http://blogs.wankuma.com/strangeworker/comments/166973.aspx</wfw:comment><comments>http://blogs.wankuma.com/strangeworker/archive/2009/01/28/166973.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/strangeworker/comments/commentRss/166973.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/strangeworker/services/trackbacks/166973.aspx</trackback:ping><description>&lt;p&gt;実用性ゼロの思いつきプログラムです。&lt;/p&gt; &lt;p&gt;というか夢の中で突然思いついて、3時過ぎに起きだしてこんなことをやってしまうってどんだけなんだという気がしますが、その辺は余りお気になさらず。汗。&lt;/p&gt; &lt;p&gt;ソースコード挿入プラグインの実験にもなったので、まあよかったかなと。コンソールアプリなので、このままコピペで動きます。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="csharpcode"&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;pre&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text.RegularExpressions;&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; ConsoleApplication49&lt;/pre&gt;&lt;pre&gt;{&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;class&lt;/span&gt; Program&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Main(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            var hitCounter = &lt;span class="kwrd"&gt;new&lt;/span&gt; HitCounter();&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;string&lt;/span&gt;[] targetTexts = &lt;/pre&gt;&lt;pre class="alt"&gt;            { &lt;/pre&gt;&lt;pre&gt;                &lt;span class="str"&gt;"abc def abcdef."&lt;/span&gt;, &lt;/pre&gt;&lt;pre class="alt"&gt;                &lt;span class="str"&gt;"ab abc abc.."&lt;/span&gt; ,&lt;/pre&gt;&lt;pre&gt;                &lt;span class="str"&gt;"abc abcd abc"&lt;/span&gt;, &lt;/pre&gt;&lt;pre class="alt"&gt;            };&lt;/pre&gt;&lt;pre&gt;            var count = hitCounter.HitCount(targetTexts, &lt;span class="str"&gt;"abc"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre&gt;            Console.Write(count);&lt;/pre&gt;&lt;pre class="alt"&gt;            Console.Read();&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;    }&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; HitCounter&lt;/pre&gt;&lt;pre&gt;    {&lt;/pre&gt;&lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; HitCount(&lt;span class="kwrd"&gt;string&lt;/span&gt;[] targetTexts, &lt;span class="kwrd"&gt;string&lt;/span&gt; hitWord)&lt;/pre&gt;&lt;pre&gt;        {&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// 文頭と文末をヒットさせるようにする&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (var i = 0; i &amp;lt; targetTexts.Length; i++)&lt;/pre&gt;&lt;pre class="alt"&gt;                targetTexts[i] = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Concat(&lt;span class="str"&gt;" "&lt;/span&gt;, targetTexts[i], &lt;span class="str"&gt;"."&lt;/span&gt;);&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="rem"&gt;// 単語の区切れを意識した正規表現&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;            hitWord = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Concat(&lt;span class="str"&gt;@"[ ,\.]"&lt;/span&gt;, hitWord, &lt;span class="str"&gt;@"[ ,\.]"&lt;/span&gt;);&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;/pre&gt;&lt;pre&gt;            &lt;span class="rem"&gt;// 該当する単語をカウント&lt;/span&gt;&lt;/pre&gt;&lt;pre class="alt"&gt;            var hitCount = 0;&lt;/pre&gt;&lt;pre&gt;            &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (var targetText &lt;span class="kwrd"&gt;in&lt;/span&gt; targetTexts)&lt;/pre&gt;&lt;pre class="alt"&gt;            {&lt;/pre&gt;&lt;pre&gt;                var regex = &lt;span class="kwrd"&gt;new&lt;/span&gt; Regex(hitWord);&lt;/pre&gt;&lt;pre class="alt"&gt;                var matches = regex.Matches(targetText.Replace(&lt;span class="str"&gt;" "&lt;/span&gt;, &lt;span class="str"&gt;"  "&lt;/span&gt;));&lt;/pre&gt;&lt;pre&gt;                hitCount += matches.Count;&lt;/pre&gt;&lt;pre class="alt"&gt;            }&lt;/pre&gt;&lt;pre&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;return&lt;/span&gt; hitCount;&lt;/pre&gt;&lt;pre&gt;        }&lt;/pre&gt;&lt;pre class="alt"&gt;    }&lt;/pre&gt;&lt;pre&gt;}&lt;/pre&gt;&lt;/div&gt;
&lt;style type="text/css"&gt;.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }
&lt;/style&gt;&lt;img src ="http://blogs.wankuma.com/strangeworker/aggbug/166973.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>