- PictureBoxの画像に対し描画して内容は非破壊にする方法(Paintイベントを利用)
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (checkBox1.Checked)
{
Pen pen = new Pen(penColor, 1);
pen.DashStyle = DashStyle.Dash;
//(重要:非破壊的)pictureBoxの場合イベントアライメントからGraphicsを取ってくるとCGデータの参照渡しにはならない
e.Graphics.DrawRectangle(pen, 10, 20, 100, 80);
pen.Dispose();
e.Dispose();
}
}
- パラメータでGraphicsを受け取って破線でグリッドを描く
private void DrawGrid(Graphics graphics)
{
if (((Grid)comboBox1.SelectedItem) != null) //応急手当。本当はListBoxを使うべきだった
{
int x, y;
int gridSize = ((Grid)comboBox1.SelectedItem).GridSize;
RectangleF clipBounds = graphics.VisibleClipBounds;
x = (int)clipBounds.Right / gridSize;
y = (int)clipBounds.Bottom / gridSize;
Pen pen = new Pen(Color.FromArgb(127, Color.White), 1);
pen.DashStyle = DashStyle.Dot;
for (int i = 0; i < x + 1; i++) { graphics.DrawLine(pen, i * gridSize, 0, i * gridSize, clipBounds.Bottom); }
for (int i = 0; i < y + 1; i++) { graphics.DrawLine(pen, 0, i * gridSize, clipBounds.Right, i * gridSize); }
}
else
comboBox1.SelectedIndex = 1;
}
最終更新:2012年09月06日 16:45