2002/12/26 初版作成
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Drawing.Drawing2D;
namespace TestGraphics1
{
/// <summary>
/// Form1 の概要の説明です。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.TabControl tabControl1;
private System.Windows.Forms.TabPage tabHatchBrush;
private System.Windows.Forms.PictureBox picBoxForHatchBrush;
private System.Windows.Forms.PictureBox picBoxLine;
private System.Windows.Forms.TabPage tabLineCap;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.TabPage tabPageLineDash;
private System.Windows.Forms.PictureBox pictureBox2;
private System.Windows.Forms.TabPage tabPageTextureBrush;
private System.Windows.Forms.PictureBox pictureBox3;
private System.Windows.Forms.TabPage tabPageLinearBrush;
private System.Windows.Forms.PictureBox pictureBox4;
private System.Windows.Forms.TabPage tabPagePathGradBrush;
private System.Windows.Forms.PictureBox pictureBox5;
private System.Windows.Forms.TabPage tabLineJoin;
private System.Windows.Forms.TabPage tabPageText;
private System.Windows.Forms.PictureBox pictureBox6;
private System.Windows.Forms.TabPage tabPageShape;
private System.Windows.Forms.PictureBox pictureBox7;
private System.Windows.Forms.TabPage tabPageTextBox;
private System.Windows.Forms.PictureBox pictureBox8;
private System.Windows.Forms.TabPage tabPageBitmap;
private System.Windows.Forms.PictureBox pictureBox9;
private System.Windows.Forms.TabPage tabPageSaveImage;
private System.Windows.Forms.Button btnSaveImage;
/// <summary>
/// 必要なデザイナ変数です。
/// </summary>
private System.ComponentModel.Container components = null;
public Form1()
{
//
// Windows フォーム デザイナ サポートに必要です。
//
InitializeComponent();
//
// TODO: InitializeComponent 呼び出しの後に、コンストラクタ コードを追加してください。
//
CreateStarPath(50, 50);
}
/// <summary>
/// 使用されているリソースに後処理を実行します。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows Form Designer generated code
/// <summary>
/// デザイナ サポートに必要なメソッドです。このメソッドの内容を
/// コード エディタで変更しないでください。
/// </summary>
private void InitializeComponent()
{
this.picBoxForHatchBrush = new System.Windows.Forms.PictureBox();
this.tabControl1 = new System.Windows.Forms.TabControl();
this.tabPageShape = new System.Windows.Forms.TabPage();
this.pictureBox7 = new System.Windows.Forms.PictureBox();
this.tabPageLineDash = new System.Windows.Forms.TabPage();
this.pictureBox2 = new System.Windows.Forms.PictureBox();
this.tabLineJoin = new System.Windows.Forms.TabPage();
this.picBoxLine = new System.Windows.Forms.PictureBox();
this.tabLineCap = new System.Windows.Forms.TabPage();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.tabHatchBrush = new System.Windows.Forms.TabPage();
this.tabPageTextureBrush = new System.Windows.Forms.TabPage();
this.pictureBox3 = new System.Windows.Forms.PictureBox();
this.tabPageLinearBrush = new System.Windows.Forms.TabPage();
this.pictureBox4 = new System.Windows.Forms.PictureBox();
this.tabPagePathGradBrush = new System.Windows.Forms.TabPage();
this.pictureBox5 = new System.Windows.Forms.PictureBox();
this.tabPageText = new System.Windows.Forms.TabPage();
this.pictureBox6 = new System.Windows.Forms.PictureBox();
this.tabPageTextBox = new System.Windows.Forms.TabPage();
this.pictureBox8 = new System.Windows.Forms.PictureBox();
this.tabPageBitmap = new System.Windows.Forms.TabPage();
this.pictureBox9 = new System.Windows.Forms.PictureBox();
this.tabPageSaveImage = new System.Windows.Forms.TabPage();
this.btnSaveImage = new System.Windows.Forms.Button();
this.tabControl1.SuspendLayout();
this.tabPageShape.SuspendLayout();
this.tabPageLineDash.SuspendLayout();
this.tabLineJoin.SuspendLayout();
this.tabLineCap.SuspendLayout();
this.tabHatchBrush.SuspendLayout();
this.tabPageTextureBrush.SuspendLayout();
this.tabPageLinearBrush.SuspendLayout();
this.tabPagePathGradBrush.SuspendLayout();
this.tabPageText.SuspendLayout();
this.tabPageTextBox.SuspendLayout();
this.tabPageBitmap.SuspendLayout();
this.tabPageSaveImage.SuspendLayout();
this.SuspendLayout();
//
// picBoxForHatchBrush
//
this.picBoxForHatchBrush.Dock = System.Windows.Forms.DockStyle.Top;
this.picBoxForHatchBrush.Name = "picBoxForHatchBrush";
this.picBoxForHatchBrush.Size = new System.Drawing.Size(576, 152);
this.picBoxForHatchBrush.TabIndex = 1;
this.picBoxForHatchBrush.TabStop = false;
this.picBoxForHatchBrush.Paint += new System.Windows.Forms.PaintEventHandler(this.picBoxHatch_Paint);
//
// tabControl1
//
this.tabControl1.Controls.AddRange(new System.Windows.Forms.Control[] {
this.tabPageShape,
this.tabPageLineDash,
this.tabLineJoin,
this.tabLineCap,
this.tabHatchBrush,
this.tabPageTextureBrush,
this.tabPageLinearBrush,
this.tabPagePathGradBrush,
this.tabPageText,
this.tabPageTextBox,
this.tabPageBitmap,
this.tabPageSaveImage});
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tabControl1.Multiline = true;
this.tabControl1.Name = "tabControl1";
this.tabControl1.SelectedIndex = 0;
this.tabControl1.Size = new System.Drawing.Size(584, 382);
this.tabControl1.TabIndex = 2;
//
// tabPageShape
//
this.tabPageShape.AutoScroll = true;
this.tabPageShape.Controls.AddRange(new System.Windows.Forms.Control[] {
this.pictureBox7});
this.tabPageShape.Location = new System.Drawing.Point(4, 38);
this.tabPageShape.Name = "tabPageShape";
this.tabPageShape.Size = new System.Drawing.Size(576, 340);
this.tabPageShape.TabIndex = 8;
this.tabPageShape.Text = "Shape";
//
// pictureBox7
//
this.pictureBox7.Dock = System.Windows.Forms.DockStyle.Top;
this.pictureBox7.Name = "pictureBox7";
this.pictureBox7.Size = new System.Drawing.Size(576, 302);
this.pictureBox7.TabIndex = 0;
this.pictureBox7.TabStop = false;
this.pictureBox7.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox7_Paint);
//
// tabPageLineDash
//
this.tabPageLineDash.Controls.AddRange(new System.Windows.Forms.Control[] {
this.pictureBox2});
this.tabPageLineDash.Location = new System.Drawing.Point(4, 21);
this.tabPageLineDash.Name = "tabPageLineDash";
this.tabPageLineDash.Size = new System.Drawing.Size(576, 357);
this.tabPageLineDash.TabIndex = 3;
this.tabPageLineDash.Text = "DashLine";
//
// pictureBox2
//
this.pictureBox2.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox2.Name = "pictureBox2";
this.pictureBox2.Size = new System.Drawing.Size(576, 357);
this.pictureBox2.TabIndex = 0;
this.pictureBox2.TabStop = false;
this.pictureBox2.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox2_Paint);
//
// tabLineJoin
//
this.tabLineJoin.AutoScroll = true;
this.tabLineJoin.Controls.AddRange(new System.Windows.Forms.Control[] {
this.picBoxLine});
this.tabLineJoin.Location = new System.Drawing.Point(4, 21);
this.tabLineJoin.Name = "tabLineJoin";
this.tabLineJoin.Size = new System.Drawing.Size(576, 357);
this.tabLineJoin.TabIndex = 0;
this.tabLineJoin.Text = "LineJoin";
//
// picBoxLine
//
this.picBoxLine.Dock = System.Windows.Forms.DockStyle.Fill;
this.picBoxLine.Name = "picBoxLine";
this.picBoxLine.Size = new System.Drawing.Size(576, 357);
this.picBoxLine.TabIndex = 0;
this.picBoxLine.TabStop = false;
this.picBoxLine.Paint += new System.Windows.Forms.PaintEventHandler(this.picBoxLine_Paint);
//
// tabLineCap
//
this.tabLineCap.Controls.AddRange(new System.Windows.Forms.Control[] {
this.pictureBox1});
this.tabLineCap.Location = new System.Drawing.Point(4, 21);
this.tabLineCap.Name = "tabLineCap";
this.tabLineCap.Size = new System.Drawing.Size(576, 357);
this.tabLineCap.TabIndex = 2;
this.tabLineCap.Text = "LineCap";
//
// pictureBox1
//
this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(576, 357);
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
this.pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint_1);
//
// tabHatchBrush
//
this.tabHatchBrush.AutoScroll = true;
this.tabHatchBrush.Controls.AddRange(new System.Windows.Forms.Control[] {
this.picBoxForHatchBrush});
this.tabHatchBrush.Location = new System.Drawing.Point(4, 21);
this.tabHatchBrush.Name = "tabHatchBrush";
this.tabHatchBrush.Size = new System.Drawing.Size(576, 357);
this.tabHatchBrush.TabIndex = 1;
this.tabHatchBrush.Text = "HatchBrush";
//
// tabPageTextureBrush
//
this.tabPageTextureBrush.Controls.AddRange(new System.Windows.Forms.Control[] {
this.pictureBox3});
this.tabPageTextureBrush.Location = new System.Drawing.Point(4, 21);
this.tabPageTextureBrush.Name = "tabPageTextureBrush";
this.tabPageTextureBrush.Size = new System.Drawing.Size(576, 357);
this.tabPageTextureBrush.TabIndex = 4;
this.tabPageTextureBrush.Text = "TextureBrush";
//
// pictureBox3
//
this.pictureBox3.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox3.Name = "pictureBox3";
this.pictureBox3.Size = new System.Drawing.Size(576, 357);
this.pictureBox3.TabIndex = 0;
this.pictureBox3.TabStop = false;
this.pictureBox3.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox3_Paint);
//
// tabPageLinearBrush
//
this.tabPageLinearBrush.Controls.AddRange(new System.Windows.Forms.Control[] {
this.pictureBox4});
this.tabPageLinearBrush.Location = new System.Drawing.Point(4, 21);
this.tabPageLinearBrush.Name = "tabPageLinearBrush";
this.tabPageLinearBrush.Size = new System.Drawing.Size(576, 357);
this.tabPageLinearBrush.TabIndex = 5;
this.tabPageLinearBrush.Text = "LinearBrush";
//
// pictureBox4
//
this.pictureBox4.Name = "pictureBox4";
this.pictureBox4.Size = new System.Drawing.Size(536, 319);
this.pictureBox4.TabIndex = 0;
this.pictureBox4.TabStop = false;
this.pictureBox4.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox4_Paint);
//
// tabPagePathGradBrush
//
this.tabPagePathGradBrush.Controls.AddRange(new System.Windows.Forms.Control[] {
this.pictureBox5});
this.tabPagePathGradBrush.Location = new System.Drawing.Point(4, 21);
this.tabPagePathGradBrush.Name = "tabPagePathGradBrush";
this.tabPagePathGradBrush.Size = new System.Drawing.Size(576, 357);
this.tabPagePathGradBrush.TabIndex = 6;
this.tabPagePathGradBrush.Text = "PathGradBrush";
//
// pictureBox5
//
this.pictureBox5.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox5.Name = "pictureBox5";
this.pictureBox5.Size = new System.Drawing.Size(576, 357);
this.pictureBox5.TabIndex = 0;
this.pictureBox5.TabStop = false;
this.pictureBox5.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox5_Paint);
//
// tabPageText
//
this.tabPageText.Controls.AddRange(new System.Windows.Forms.Control[] {
this.pictureBox6});
this.tabPageText.Location = new System.Drawing.Point(4, 21);
this.tabPageText.Name = "tabPageText";
this.tabPageText.Size = new System.Drawing.Size(576, 357);
this.tabPageText.TabIndex = 7;
this.tabPageText.Text = "Text";
//
// pictureBox6
//
this.pictureBox6.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox6.Name = "pictureBox6";
this.pictureBox6.Size = new System.Drawing.Size(576, 357);
this.pictureBox6.TabIndex = 0;
this.pictureBox6.TabStop = false;
this.pictureBox6.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox6_Paint);
//
// tabPageTextBox
//
this.tabPageTextBox.Controls.AddRange(new System.Windows.Forms.Control[] {
this.pictureBox8});
this.tabPageTextBox.Location = new System.Drawing.Point(4, 38);
this.tabPageTextBox.Name = "tabPageTextBox";
this.tabPageTextBox.Size = new System.Drawing.Size(576, 340);
this.tabPageTextBox.TabIndex = 9;
this.tabPageTextBox.Text = "Text2";
//
// pictureBox8
//
this.pictureBox8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
this.pictureBox8.Location = new System.Drawing.Point(32, 40);
this.pictureBox8.Name = "pictureBox8";
this.pictureBox8.Size = new System.Drawing.Size(264, 184);
this.pictureBox8.TabIndex = 0;
this.pictureBox8.TabStop = false;
this.pictureBox8.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox8_Paint);
//
// tabPageBitmap
//
this.tabPageBitmap.Controls.AddRange(new System.Windows.Forms.Control[] {
this.pictureBox9});
this.tabPageBitmap.Location = new System.Drawing.Point(4, 38);
this.tabPageBitmap.Name = "tabPageBitmap";
this.tabPageBitmap.Size = new System.Drawing.Size(576, 340);
this.tabPageBitmap.TabIndex = 10;
this.tabPageBitmap.Text = "Bitmap";
//
// pictureBox9
//
this.pictureBox9.Dock = System.Windows.Forms.DockStyle.Fill;
this.pictureBox9.Name = "pictureBox9";
this.pictureBox9.Size = new System.Drawing.Size(576, 340);
this.pictureBox9.TabIndex = 0;
this.pictureBox9.TabStop = false;
this.pictureBox9.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox9_Paint);
//
// tabPageSaveImage
//
this.tabPageSaveImage.Controls.AddRange(new System.Windows.Forms.Control[] {
this.btnSaveImage});
this.tabPageSaveImage.Location = new System.Drawing.Point(4, 38);
this.tabPageSaveImage.Name = "tabPageSaveImage";
this.tabPageSaveImage.Size = new System.Drawing.Size(576, 340);
this.tabPageSaveImage.TabIndex = 11;
this.tabPageSaveImage.Text = "SaveImage";
//
// btnSaveImage
//
this.btnSaveImage.Location = new System.Drawing.Point(72, 56);
this.btnSaveImage.Name = "btnSaveImage";
this.btnSaveImage.Size = new System.Drawing.Size(104, 32);
this.btnSaveImage.TabIndex = 0;
this.btnSaveImage.Text = "SaveImage";
this.btnSaveImage.Click += new System.EventHandler(this.btnSaveImage_Click);
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 12);
this.ClientSize = new System.Drawing.Size(584, 382);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.tabControl1});
this.Name = "Form1";
this.Text = "TestGraphics";
this.tabControl1.ResumeLayout(false);
this.tabPageShape.ResumeLayout(false);
this.tabPageLineDash.ResumeLayout(false);
this.tabLineJoin.ResumeLayout(false);
this.tabLineCap.ResumeLayout(false);
this.tabHatchBrush.ResumeLayout(false);
this.tabPageTextureBrush.ResumeLayout(false);
this.tabPageLinearBrush.ResumeLayout(false);
this.tabPagePathGradBrush.ResumeLayout(false);
this.tabPageText.ResumeLayout(false);
this.tabPageTextBox.ResumeLayout(false);
this.tabPageBitmap.ResumeLayout(false);
this.tabPageSaveImage.ResumeLayout(false);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// アプリケーションのメイン エントリ ポイントです。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private PointF[] starPoints = null;
private GraphicsPath starPath = null;
private void CreateStarPath(int w, int h)
{
int r = System.Math.Min(w, h)/2;
Point [] stars = new Point[] {
new Point((int)(r*Math.Sin(Math.PI*2*0.0)), (int)(r*-Math.Cos(Math.PI*2*0))),
new Point((int)(r*Math.Sin(Math.PI*2*2/5)), (int)(r*-Math.Cos(Math.PI*2*2/5))),
new Point((int)(r*Math.Sin(Math.PI*2*4/5)), (int)(r*-Math.Cos(Math.PI*2*4/5))),
new Point((int)(r*Math.Sin(Math.PI*2*1/5)), (int)(r*-Math.Cos(Math.PI*2*1/5))),
new Point((int)(r*Math.Sin(Math.PI*2*3/5)), (int)(r*-Math.Cos(Math.PI*2*3/5))),
new Point((int)(r*Math.Sin(Math.PI*2*0.0)), (int)(r*-Math.Cos(Math.PI*2*0)))
};
starPath = new GraphicsPath();
starPath.AddLines(stars);
starPath.Transform(new System.Drawing.Drawing2D.Matrix(1,0,0,1,r,r));
starPoints = starPath.PathPoints;
}
// col, row で、カラム、行を指定して、座標系を移動するためのメソッド
static private GraphicsState gstate = null;
private void MoveTo(Graphics g, int col, int row, string comment)
{
if(gstate != null)
g.Restore(gstate);
gstate = g.Save();
g.TranslateTransform(col * 250, row * 60 + 10, MatrixOrder.Append);
g.DrawString(comment, this.Font, new SolidBrush(Color.Black), 10, 10);
g.TranslateTransform(150, 0, MatrixOrder.Append);
}
private void EndMoveTo(Graphics g)
{
if(gstate != null)
{
g.Restore(gstate);
gstate = null;
}
}
// Shape
private void pictureBox7_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
this.pictureBox7.Height = 1024;
Graphics g = e.Graphics;
MoveTo(g, 0, 0, "Line");
g.DrawLine(new Pen(Color.Blue), new Point(0, 0), new Point(100, 0));
g.DrawLine(new Pen(Color.Blue, 2.0F), new Point(0, 10), new Point(100, 10));
g.DrawLine(new Pen(Color.Blue, 3.0F), new Point(0, 20), new Point(100, 20));
MoveTo(g, 0, 1, "DrawArc");
g.DrawArc(new Pen(Color.Blue), 0, 0, 50, 50, 0, 300);
MoveTo(g, 0, 2, "DrawBezier");
g.DrawBezier(new Pen(Color.Blue),
new Point(0, 0), new Point(50, 50), new Point(100, 20), new Point(150, 40));
MoveTo(g, 0, 3, "DrawClosedCurve");
Point [] curPoints = {new Point(0, 0), new Point(20, 50), new Point(50, 0), new Point(80, 30)};
Point [] points = {new Point(0, 0), new Point(20, 20), new Point(50, 0), new Point(70, 30),
new Point(80, 10), new Point(80, 40), new Point(40, 20), new Point(10, 40)};
g.DrawClosedCurve(new Pen(Color.Blue), curPoints, 1.0F, FillMode.Alternate);
MoveTo(g, 0, 4, "DrawCurve");
g.DrawCurve(new Pen(Color.Blue), curPoints, 1.0F);
MoveTo(g, 0, 5, "DrawEllipse");
g.DrawEllipse(new Pen(Color.Blue), 0, 0, 100, 50);
MoveTo(g, 0, 6, "DrawPath");
g.DrawPath(new Pen(Color.Blue), this.starPath);
MoveTo(g, 0, 7, "DrawPie");
g.DrawPie(new Pen(Color.Blue), 0, 0, 50, 50, 0, 75);
MoveTo(g, 0, 8, "DrawPolygon");
g.DrawPolygon(new Pen(Color.Blue), points);
MoveTo(g, 0, 9, "DrawRectangle");
g.DrawRectangle(new Pen(Color.Blue), 0, 0, 100, 50);
Image texture = new Bitmap(@"..\..\marble.gif");
Brush textureBrush = new TextureBrush(texture);
MoveTo(g, 1, 3, "FillClosedCurve");
g.FillClosedCurve(textureBrush, curPoints, FillMode.Alternate, 1.0F);
MoveTo(g, 1, 5, "FillEllipse");
g.FillEllipse(textureBrush, 0, 0, 100, 50);
MoveTo(g, 1, 6, "FillPath");
g.FillPath(textureBrush, this.starPath);
MoveTo(g, 1, 7, "FillPie");
g.FillPie(textureBrush, 0, 0, 50, 50, 0, 75);
MoveTo(g, 1, 8, "FillPolygon Alternate");
g.FillPolygon(textureBrush, starPoints, FillMode.Alternate);
MoveTo(g, 2, 8, "FillPolygon Winding");
g.FillPolygon(textureBrush, starPoints, FillMode.Winding);
MoveTo(g, 1, 9, "FillRectangle");
g.FillRectangle(textureBrush, 0, 0, 100, 50);
MoveTo(g, 1, 10, "FillRegion");
this.starPath.FillMode = FillMode.Alternate;
g.FillRegion(textureBrush, new Region(this.starPath));
MoveTo(g, 2, 10, "FillRegion Winding");
this.starPath.FillMode = FillMode.Winding;
g.FillRegion(textureBrush, new Region(this.starPath));
EndMoveTo(g);
}
// ダッシュライン
private void pictureBox2_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
Point [] points = {new Point(100, 10), new Point(0, 10), new Point(100, 30)};
Pen pen = new Pen(Color.Blue, 2.0F);
this.MoveTo(g, 0, 0, "Dash");
pen.DashStyle = DashStyle.Dash;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 1, "DashDot");
pen.DashStyle = DashStyle.DashDot;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 2, "DashDotDot");
pen.DashStyle = DashStyle.DashDotDot;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 3, "Dot");
pen.DashStyle = DashStyle.Dot;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 4, "Solid");
pen.DashStyle = DashStyle.Solid;
g.DrawLines(pen, points);
EndMoveTo(g);
}
// ラインジョイン
private void picBoxLine_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
Point [] points = {new Point(100, 20), new Point(50, 20), new Point(100, 40)};
Pen pen = new Pen(Color.Blue, 15.0F);
this.MoveTo(g, 0, 0, "Default");
g.DrawLines(pen, points);
this.MoveTo(g, 0, 1, "LineJoin.Bevel");
pen.LineJoin = LineJoin.Bevel;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 2, "LineJoin.Miter");
pen.LineJoin = LineJoin.Miter;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 3, "MiterClipped: 5");
pen.LineJoin = LineJoin.MiterClipped;
pen.MiterLimit = 5;
g.DrawLines(pen, points);
this.MoveTo(g, 1, 3, "MiterClipped: 15");
pen.LineJoin = LineJoin.MiterClipped;
pen.MiterLimit = 15;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 4, "LineJoin.Round");
pen.LineJoin = LineJoin.Round;
g.DrawLines(pen, points);
EndMoveTo(g);
}
// ラインキャップ
private void pictureBox1_Paint_1(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
Point [] points = {new Point(0, 10), new Point(50, 10), new Point(0, 30)};
Pen pen = new Pen(Color.Blue, 10.0F);
this.MoveTo(g, 0, 0, "LineCap.AnchorMask");
pen.StartCap = pen.EndCap = LineCap.AnchorMask;
g.DrawLines(pen, points);
this.MoveTo(g, 1, 0, "LineCap.ArrowAnchor");
pen.StartCap = pen.EndCap = LineCap.ArrowAnchor;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 1, "LineCap.DiamondAnchor");
pen.StartCap = pen.EndCap = LineCap.DiamondAnchor;
g.DrawLines(pen, points);
this.MoveTo(g, 1, 1, "LineCap.Flat");
pen.StartCap = pen.EndCap = LineCap.Flat;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 2, "LineCap.NoAnchor");
pen.StartCap = pen.EndCap = LineCap.NoAnchor;
g.DrawLines(pen, points);
this.MoveTo(g, 1, 2, "LineCap.Round");
pen.StartCap = pen.EndCap = LineCap.Round;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 3, "LineCap.RoundAnchor");
pen.StartCap = pen.EndCap = LineCap.RoundAnchor;
g.DrawLines(pen, points);
this.MoveTo(g, 1, 3, "LineCap.Square");
pen.StartCap = pen.EndCap = LineCap.Square;
g.DrawLines(pen, points);
this.MoveTo(g, 0, 4, "LineCap.SquareAnchor");
pen.StartCap = pen.EndCap = LineCap.SquareAnchor;
g.DrawLines(pen, points);
this.MoveTo(g, 1, 4, "LineCap.Triangle");
pen.StartCap = pen.EndCap = LineCap.Triangle;
g.DrawLines(pen, points);
EndMoveTo(g);
}
// ハッチブラシ
private void picBoxHatch_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
this.picBoxForHatchBrush.Width = this.tabHatchBrush.ClientSize.Width;
Graphics g = e.Graphics;
int x = 0;
int y = 10;
string [] hatchStyleNames = Enum.GetNames(typeof(HatchStyle));
foreach(string hatchStyleStr in hatchStyleNames)
{
HatchStyle hatchStyle = (HatchStyle)Enum.Parse(typeof(HatchStyle), hatchStyleStr);
HatchBrush hb = new HatchBrush(hatchStyle, Color.Blue,
Color.FromArgb(100, Color.Cyan));
g.DrawString(hatchStyle.ToString(), this.Font, new SolidBrush(Color.Black), x + 10, y);
g.FillEllipse(hb, x + 10, y + 10, 100, 20);
x += 150;
if ( x + 100 >= this.picBoxForHatchBrush.Width)
{
x = 0;
y += 40;
}
}
this.picBoxForHatchBrush.Height = y + 50;
}
// テクスチャブラシ
private void pictureBox3_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
this.MoveTo(g, 0, 0, "TextureBrush");
Image texture = new Bitmap(@"..\..\texture.gif");
Brush textureBrush = new TextureBrush(texture);
g.FillRectangle(textureBrush, 0, 0, 100, 50);
MoveTo(g, 1, 0, "TextureBrush");
Image marble = new Bitmap(@"..\..\marble.gif");
Brush marbleBrush = new TextureBrush(marble);
g.FillEllipse(marbleBrush, 0, 0, 100, 50);
this.EndMoveTo(g);
}
// リニアグラデーション
private void pictureBox4_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
Rectangle r = new Rectangle(0, 20, 100, 40);
this.MoveTo(g, 0, 0, "LinearGradientMode.BackwardDiagonal");
LinearGradientBrush lbBD = new LinearGradientBrush(r, Color.Magenta, Color.Blue,
LinearGradientMode.BackwardDiagonal);
g.FillRectangle(lbBD, r);
this.MoveTo(g, 0, 1, "LinearGradientMode.ForwardDiagonal");
LinearGradientBrush lbFD = new LinearGradientBrush(r, Color.Magenta, Color.Blue,
LinearGradientMode.ForwardDiagonal);
g.FillRectangle(lbFD, r);
this.MoveTo(g, 0, 2, "LinearGradientMode.Horizontal");
LinearGradientBrush lbH = new LinearGradientBrush(r, Color.Magenta, Color.Blue,
LinearGradientMode.Horizontal);
g.FillRectangle(lbH, r);
this.MoveTo(g, 0, 3, "LinearGradientMode.Vertical");
LinearGradientBrush lbV = new LinearGradientBrush(r, Color.Magenta, Color.Blue,
LinearGradientMode.Vertical);
g.FillRectangle(lbV, r);
EndMoveTo(g);
}
// パスグラデーションブラシ
private void pictureBox5_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
g.FillRectangle(new SolidBrush(Color.FromArgb(180, Color.White)), ClientRectangle);
this.MoveTo(g, 0, 0, "PathGradientBrush");
GraphicsPath path = new GraphicsPath();
path.AddLines(new Point[] {new Point(0, 0), new Point(100, 0), new Point(100, 40), new Point(0, 40)} );
PathGradientBrush pgRect = new PathGradientBrush(path);
pgRect.SurroundColors = new Color[] {
Color.Magenta,
Color.Yellow,
Color.Red,
Color.Blue,
};
g.FillPath(pgRect, path);
this.CreateStarPath(50, 50);
this.MoveTo(g, 0, 1, "PathGradientBrush : Alternate");
PathGradientBrush pgStar = new PathGradientBrush(this.starPath);
pgStar.SurroundColors = new Color[] {
Color.Green,
Color.Yellow,
Color.Red,
Color.Blue,
Color.Orange,
Color.White,
};
g.FillPath(pgStar, this.starPath);
this.MoveTo(g, 1, 1, "PathGradientBrush : Winding");
this.starPath.FillMode = FillMode.Winding;
pgStar = new PathGradientBrush(this.starPath);
pgStar.SurroundColors = new Color[] {
Color.Green,
Color.Yellow,
Color.Red,
Color.Blue,
Color.Orange,
Color.White,
};
g.FillPath(pgStar, this.starPath);
}
// テキスト
private void pictureBox6_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
this.MoveTo(g, 0, 0, "Default Font");
g.DrawString("Default Font", this.Font, new SolidBrush(Color.Black), 0, 0);
this.MoveTo(g, 0, 1, "Large Font");
g.DrawString("Large Font", new Font("New Times Roman", 20.0F), new SolidBrush(Color.Black), 0, 0);
this.MoveTo(g, 0, 2, "Texture Font");
TextureBrush textureBrush = new TextureBrush(new Bitmap(@"..\..\marble.gif"));
g.DrawString("Texture", new Font("Impact", 40.0F), textureBrush, 0, 0);
this.MoveTo(g, 0, 3, "Shadow Font");
g.DrawString("Shadow", new Font("Impact", 40.0F), new SolidBrush(Color.Black), 5, 5);
g.DrawString("Shadow", new Font("Impact", 40.0F), textureBrush, 0, 0);
this.MoveTo(g, 0, 4, "Transparent Font");
g.RotateTransform(-30.0F, MatrixOrder.Append);
Color transparentRed = Color.FromArgb(100, Color.Blue);
g.DrawString("Uchukamen", new Font("Impact", 40.0F), new SolidBrush(transparentRed), -100, 0);
this.EndMoveTo(g);
}
// テキスト(その2)
private void pictureBox8_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
Font font = new Font("MS Pゴシック", 12);
StringFormat format = new StringFormat();
format.Alignment=StringAlignment.Center;
string str ="C# プログラミング。"
+ "DrawString に Rectangle を指定すると、テキストはその四角形に収まるように折り返す。\n"
+ "StringFormat を使用すると文字列の左寄せ、中央寄せ、右寄せを指定できます。\n";
g.DrawString(str, font, new SolidBrush(Color.Blue), this.pictureBox8.ClientRectangle, format);
}
// ビットマップ
private void pictureBox9_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
Graphics g = e.Graphics;
g.DrawImage(new Bitmap(@"..\..\Shuttle.jpg"), this.pictureBox9.ClientRectangle);
}
private void btnSaveImage_Click(object sender, System.EventArgs e)
{
Bitmap bmp = new Bitmap(200,200, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(bmp);
g.FillEllipse(new SolidBrush(Color.Blue), 0, 0, 100, 50);
g.DrawString("Hello World", this.Font, new SolidBrush(Color.Yellow), 10, 10);
bmp.Save("test.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
}
}
|