Head First C#
頭とからだで覚えるC#の基本
(オライリージャパン)
Andrew Stellman (著), Jennifer Green (著)
佐藤 嘉一 (監修), 木下 哲也 (翻訳)
開発環境
- Microsoft Windows 8.1 Pro (VMware Fusion 6, OS X Mavericks - Apple) (OS)
- C# (プログラミング言語)
- Microsoft Visual Studio Express 2013 for Windows Desktop (統合開発環境, IDE)
Head First C#―頭とからだで覚えるC#の基本 (Andrew Stellman (著)、Jennifer Green (著)、佐藤 嘉一 (監修)、木下 哲也 (翻訳)、オライリージャパン)の10章(コントロールとグラフィックス: 見栄えをよくする)、エクササイズ(p.464)を解いてみる。
エクササイズ(p.464)
コード
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Drawing.Printing;
namespace _3_Beehive_Simulator__controls_
{
public partial class Form1 : Form
{
// 省略...
private void printToolStripButton_Click(object sender, EventArgs e)
{
PrintDocument document = new PrintDocument();
bool b = false;
if (timer1.Enabled)
{
timer1.Stop();
b = true;
}
document.PrintPage += document_PrintPage;
PrintPreviewDialog preview = new PrintPreviewDialog();
preview.Document = document;
preview.ShowDialog(this);
if (b)
{
timer1.Start();
}
}
void document_PrintPage(object sender, PrintPageEventArgs e)
{
// 省略
tableY = PrintTableRow(g, tableX, tableWith, firstColumnX, secondColumnX, tableY,
"蜜蜂", Bees.Text);
tableY = PrintTableRow(g, tableX, tableWith, firstColumnX, secondColumnX, tableY,
"花", Flowers.Text);
tableY = PrintTableRow(g, tableX, tableWith, firstColumnX, secondColumnX, tableY,
"巣の中の蜂蜜", HoneyInHive.Text);
tableY = PrintTableRow(g, tableX, tableWith, firstColumnX, secondColumnX, tableY,
"花蜜", NectarInFlowers.Text);
tableY = PrintTableRow(g, tableX, tableWith, firstColumnX, secondColumnX, tableY,
"実行フレーム数", FramesRun.Text);
tableY = PrintTableRow(g, tableX, tableWith, firstColumnX, secondColumnX, tableY,
"フレームレート", FrameRate.Text);
g.DrawLine(Pens.Black, tableX, e.MarginBounds.Y, tableX + tableWith, e.MarginBounds.Y);
g.DrawLine(Pens.Black, tableX, e.MarginBounds.Y, tableX, tableY);
g.DrawLine(Pens.Black, secondColumnX, e.MarginBounds.Y, secondColumnX, tableY);
g.DrawLine(Pens.Black, tableX + tableWith, e.MarginBounds.Y, tableX + tableWith, tableY);
using (Bitmap hiveBitmap = new Bitmap(hiveForm.ClientSize.Width, hiveForm.ClientSize.Height))
{
using (Graphics graphics = Graphics.FromImage(hiveBitmap))
{
renderer.PaintHive(graphics);
}
g.DrawImage(hiveBitmap,
e.MarginBounds.X + (e.MarginBounds.Width - e.MarginBounds.Width / 2) / 2,
e.MarginBounds.Height / 3,
e.MarginBounds.Width / 2,
(float)e.MarginBounds.Width / 2 * hiveBitmap.Height / hiveBitmap.Width);
using (Pen pen = new Pen(Brushes.Black, 2))
{
g.DrawRectangle(pen,
e.MarginBounds.X + (e.MarginBounds.Width - e.MarginBounds.Width / 2) / 2,
e.MarginBounds.Height / 3,
e.MarginBounds.Width / 2,
(float)e.MarginBounds.Width / 2 * hiveBitmap.Height / hiveBitmap.Width);
}
}
using (Bitmap fieldBitmap = new Bitmap(fieldForm.ClientSize.Width, fieldForm.ClientSize.Height))
{
using (Graphics graphics = Graphics.FromImage(fieldBitmap))
{
renderer.PaintField(graphics);
}
g.DrawImage(fieldBitmap,
e.MarginBounds.X,
e.MarginBounds.Y + e.MarginBounds.Height - e.MarginBounds.Width * (float)fieldBitmap.Height / fieldBitmap.Width,
e.MarginBounds.Width,
e.MarginBounds.Width * (float)fieldBitmap.Height / fieldBitmap.Width);
using (Pen pen = new Pen(Brushes.Black, 2))
{
g.DrawRectangle(pen,
e.MarginBounds.X,
e.MarginBounds.Y + e.MarginBounds.Height - e.MarginBounds.Width * (float)fieldBitmap.Height / fieldBitmap.Width,
e.MarginBounds.Width,
e.MarginBounds.Width * (float)fieldBitmap.Height / fieldBitmap.Width);
}
}
}
// 省略...
}
}
0 コメント:
コメントを投稿