1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
private Image monImage = null;
private Image bmpAxis = null;
private Rectangle rectImage = Rectangle.Empty;
private void MainForm_Load(object sender, EventArgs e)
{
monImage = pictureBox.Image;
bmpAxis = new Bitmap(monImage.Width, monImage.Height);
rectImage = new Rectangle(0, 0, monImage.Width, monImage.Height);
pictureBox.Invalidate();
}
Single factZoom = 1.0f;
Single inc = 0.25f;
Single zmax = 3.0f;
Single zmin = 0.25f;
private void btnZoomPlus_Click(object sender, EventArgs e)
{
factZoom += inc;
factZoom = Math.Min(zmax, factZoom);
pictureBox.Invalidate();
}
private void btnZoomMoins_Click(object sender, EventArgs e)
{
factZoom -= inc;
factZoom = Math.Max(zmin, factZoom);
pictureBox.Invalidate();
}
private void pictureBox_Paint(object sender, PaintEventArgs e)
{
Graphics gr = e.Graphics;
gr.ResetTransform();
Matrix m = new Matrix();
m.Scale(factZoom, factZoom);
gr.Transform = m;
if (monImage != null)
{
// Dessine monImage
gr.DrawImage(monImage, rectImage);
}
// Dessine bmpAxis
if (checkBox1.Checked)
{
gr.DrawImage(bmpAxis, rectImage);
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
DessineSurBmpAxis();
pictureBox.Invalidate();
}
// Dessine sur la bitmap
private void DessineSurBitmap()
{
if (monImage == null) return;
using (Graphics gr = Graphics.FromImage(monImage))
{
Rectangle rectDessin;
rectDessin = new Rectangle(50, 75, 300, 200);
gr.DrawRectangle(Pens.White, rectDessin);
rectDessin = new Rectangle(80, 120, 300, 400);
gr.DrawEllipse(Pens.White, rectDessin);
Point P1 = new Point(100, 60);
Point P2 = new Point(25, 350);
gr.DrawLine(Pens.White, P1, P2);
}
}
// Dessine sur la bitmap des Axes
private void DessineSurBmpAxis()
{
bmpAxis = new Bitmap(bmpAxis, rectImage.Size);
using (Graphics grAxis = Graphics.FromImage(bmpAxis))
{
using (Pen penAxe = new Pen(Color.Red, 4.0f))
{
grAxis.DrawLine(penAxe, 0, bmpAxis.Height - 1024,
bmpAxis.Width, bmpAxis.Height - 1024); // axe X, le -5 pour ne pas être sur le bord
grAxis.DrawLine(penAxe, 0 + 1024, 0, 0 + 1024, bmpAxis.Height);
}
}
} |
Partager