1. 陰影畫筆
HatchBrush hBrush1 = new HatchBrush
(HatchStyle.DashedVertical, Color.Chocolate, Color.Red);
HatchBrush hBrush2 = new HatchBrush
(HatchStyle.DarkDownwardDiagonal, Color.Green, Color.Black);
HatchBrush hBrush3 = new HatchBrush
(HatchStyle.SmallCheckerBoard, Color.BlueViolet, Color.Blue);
g.FillEllipse(hBrush1, 20, 40, 100, 120);
Rectangle rect = new Rectangle(150, 80, 200, 140);
g.FillPie(hBrush3, 40, 20, 200, 40, 0.0f, 60.0f );
g.FillRectangle(hBrush2, rect);
2. Form1_Load事件處理程序:創建一個位圖並從此位圖創建一個Graphics對象。
private void Form1_Load(object sender,
System.EventArgs e)
{
// Get the full size of the form
fullSize = SystemInformation
.PrimaryMonitorMaximizedWindowSize;
// Create a bitmap using full size
bitmap = new Bitmap(fullSize.Width,
fullSize.Height);
// Create a Graphics object from Bitmap
curGraphics = Graphics.FromImage(bitmap);
// Set background color as form's color
curGraphics.Clear(this.BackColor);
// Default pen and brush button colors
PenBtn.BackColor = Color.Black;
BrushBtn.BackColor = Color.Black;
// Create a new pen and brush as
// default pen and brush
curPen = new Pen(Color.Black);
curBrush = new SolidBrush(Color.Black);
}
3. 選擇鋼筆和畫筆的顏色
private void PenSettings_Click(object sender,
System.EventArgs e)
{
ColorDialog colorDlg = new ColorDialog();
colorDlg.ShowDialog();
PenBtn.BackColor = colorDlg.Color;
}
private void BrushSettings_Click(object sender,
System.EventArgs e)
{
ColorDialog colorDlg = new ColorDialog();
colorDlg.ShowDialog();
BrushBtn.BackColor = colorDlg.Color;
}
4. 窗體的paint事件處理程序
以下代碼設置鋼筆的Color和Width屬性及畫筆的Color屬性。
private void Form1_Paint(object sender,
System.Windows.Forms.PaintEventArgs e)
{
// Set current pens color
curPen.Color = Color.FromArgb(
Convert.ToInt16(
TransCounter.Value.ToString()),
PenBtn.BackColor.R,
PenBtn.BackColor.G,
PenBtn.BackColor.B);
// Set pen's width
curPen.Width = (float)PenWidthCounter.Value;
// Set current brush's color
curBrush.Color = Color.FromArgb(
Convert.ToInt16(
TransCounter.Value.ToString()),
BrushBtn.BackColor.R,
BrushBtn.BackColor.G,
BrushBtn.BackColor.B);
Graphics g = e.Graphics;
// If dragmode is true, draw selected
// graphics shape
if (dragMode)
{
switch (drawIndex)
{
case 1:
{
g.DrawLine(curPen, curX, curY, x, y);
break;
}
case 2:
{
g.DrawEllipse(curPen,
curX, curY, diffX, diffY);
break;
}
case 3:
{
g.DrawRectangle(curPen,
curX, curY, diffX, diffY);
break;
}
case 4:
{
g.FillRectangle(curBrush,
curX, curY, diffX, diffY);
break;
}
case 5:
{
g.FillEllipse(curBrush,
curX, curY, diffX, diffY);
break;
}
}
}
}