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 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Drawing2D;
namespace WinCustomCaret
{
public partial class Form6 : Form
{
private Image monImage = null;
private Image bmpAxis = null;
private Rectangle rectImage = Rectangle.Empty;
public Form6()
{
InitializeComponent();
pictureBox1.SizeMode = PictureBoxSizeMode.Normal ;//normal
pictureBox1.MouseWheel += new MouseEventHandler(pictureBox1_MouseWheel);
}
private void Form6_Load(object sender, EventArgs e)
{
monImage = WinCustomCaret.Properties.Resources.Koala;
bmpAxis = new Bitmap(monImage.Width, monImage.Height);
rectImage = new Rectangle(0, 0, monImage.Width , monImage.Height);
pictureBox1.Invalidate();
}
private void button1_Click(object sender, EventArgs e)
{
DessineSurBitmap();
pictureBox1.Invalidate();
}
private void btnZoomPlus_Click(object sender, EventArgs e)
{
pictureBox1.Invalidate();
}
private void btnZoomMoins_Click(object sender, EventArgs e)
{
pictureBox1.Invalidate();
}
private void pictureBox1_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);
}
}
// 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);
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
DessineSurBmpAxis();
pictureBox1.Invalidate();
}
// 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.Yellow, 2.0f))
{
grAxis.DrawLine(penAxe, 0, bmpAxis.Height - 5,
bmpAxis.Width, bmpAxis.Height - 5); // axe X, le -5 pour ne pas être sur le bord
grAxis.DrawLine(penAxe, 0 + 5, 0, 0 + 5, bmpAxis.Height);
}
}
}
// ce handler est necessaire pour PctureBox_MouseWheel
private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
pictureBox1.Focus();
}
Single factZoom = 1.0f;
Single inc = 0.1f;
Single zmax = 3.0f;
Single zmin = 0.25f;
void pictureBox1_MouseWheel(object sender, MouseEventArgs e)
{
if (e.Delta >0)
{
factZoom += inc;
factZoom = Math.Min(zmax, factZoom);
}
else if(e.Delta <0)
{
factZoom -= inc;
factZoom = Math.Max(zmin, factZoom);
}
pictureBox1.Invalidate();
}
}
} |
Partager