dotnetmonitor.com

 
Index
Previous
Next

 

enable/disable check margin

enable/disable image margin

check rendering (image, no image)

raw Bitmap creation

class Form5 : Form

{

// check/image/checkmargin/imagemargin combinectrics

 

public Form5()

{

// size form to show three wide menuitems

this.Width = 500;

this.Text = "ToolStripContextMenuStrip: Image and Check Margins";

 

// new MenuStrip

MenuStrip ms = new MenuStrip();

ToolStripMenuItem bothMargins = new ToolStripMenuItem("BothMargins");

ToolStripMenuItem imageMarginOnly = new ToolStripMenuItem("ImageMargin");

ToolStripMenuItem checkMarginOnly = new ToolStripMenuItem("CheckMargin");

ToolStripMenuItem noMargins = new ToolStripMenuItem("NoMargins");

 

// wire DropDowns, customize

// both

bothMargins.DropDown = CreateCheckImageContextMenuStrip();

((ContextMenuStrip)bothMargins.DropDown).ShowImageMargin = true;

((ContextMenuStrip)bothMargins.DropDown).ShowCheckMargin = true;

 

// Image only

imageMarginOnly.DropDown = CreateCheckImageContextMenuStrip();

((ContextMenuStrip)imageMarginOnly.DropDown).ShowImageMargin = true;

((ContextMenuStrip)imageMarginOnly.DropDown).ShowCheckMargin = false;

 

// Check only

checkMarginOnly.DropDown = CreateCheckImageContextMenuStrip();

((ContextMenuStrip)checkMarginOnly.DropDown).ShowImageMargin = false;

((ContextMenuStrip)checkMarginOnly.DropDown).ShowCheckMargin = true;

 

// None

noMargins.DropDown = CreateCheckImageContextMenuStrip();

((ContextMenuStrip)noMargins.DropDown).ShowImageMargin = false;

((ContextMenuStrip)noMargins.DropDown).ShowCheckMargin = false;

 

// add items to menustrip

ms.Items.Add(bothMargins);

ms.Items.Add(imageMarginOnly);

ms.Items.Add(checkMarginOnly);

ms.Items.Add(noMargins);

 

// dock to top

ms.Dock = DockStyle.Top;

 

// add menustrip to the controls collection last - Z order!

this.Controls.Add(ms);

}

 

internal Bitmap CreateSampleBitmap()

{

// smiley face

Bitmap sampleBitmap = new Bitmap(32, 32);

Graphics g = Graphics.FromImage(sampleBitmap);

 

using (Pen p = new Pen(ProfessionalColors.ButtonPressedBorder))

{

p.Width = 4;

 

Point[] curvePoints = new Point[]{

new Point(4,14),

new Point(16,24),

new Point(28,14)};

// mouth

g.DrawCurve(p, curvePoints);

 

// eyes

g.DrawEllipse(p, new Rectangle(new Point(7, 4), new Size(3, 3)));

g.DrawEllipse(p, new Rectangle(new Point(22, 4), new Size(3, 3)));

}

return sampleBitmap;

}

 

internal ContextMenuStrip CreateCheckImageContextMenuStrip()

{

// new ContextMenuStrip

ContextMenuStrip checkImageContextMenuStrip = new ContextMenuStrip();

 

ToolStripMenuItem yesCheckYesImage = new ToolStripMenuItem("Check, Image");

yesCheckYesImage.Checked = true;

yesCheckYesImage.Image = CreateSampleBitmap();

 

ToolStripMenuItem noCheckYesImage = new ToolStripMenuItem("No Check, Image");

noCheckYesImage.Checked = false;

noCheckYesImage.Image = CreateSampleBitmap();

 

ToolStripMenuItem yesCheckNoImage = new ToolStripMenuItem("Check, No Image");

yesCheckNoImage.Checked = true;

 

ToolStripMenuItem noCheckNoImage = new ToolStripMenuItem("No Check, No Image");

noCheckNoImage.Checked = false;

 

// add items to context menu strip

checkImageContextMenuStrip.Items.Add(yesCheckYesImage);

checkImageContextMenuStrip.Items.Add(noCheckYesImage);

checkImageContextMenuStrip.Items.Add(yesCheckNoImage);

checkImageContextMenuStrip.Items.Add(noCheckNoImage);

 

return checkImageContextMenuStrip;

 

}

 

}

Painting
When should I use Paint/OnPaint and when should I override the ToolStripRenderer?
Do I need to worry about double buffering?
Parenting
Partial Trust
Usage