private void 열기ToolStripMenuItem_Click(object sender, EventArgs e) { OpenFileDialog chooser = new OpenFileDialog(); chooser.Title = "File Open"; chooser.Filter = "All Files (*.*)|*.*"; chooser.InitialDirectory = "."; if (chooser.ShowDialog() != DialogResult.OK) { return; } _fileName = chooser.FileName; _figures.Clear(); _selectedFigure = null; BinaryFormatter formatter = new BinaryFormatter(); Stream input = File.OpenRead(_fileName); _figures = (FigureList)formatter.Deserialize(input); input.Close(); for (int i = 0; i < _figures.Count; i++) { Figure ptr = _figures.getAt(i); ptr.makeRegion(); ptr.setView(canvas); if (ptr is Point) { ptr.setPopup(pointPopup); } else if (ptr is Line) { ptr.setPopup(linePopup); } else if (ptr is Box) { ptr.setPopup(boxPopup); } else if (ptr is Circle) { ptr.setPopup(circlePopup); } } canvas.Invalidate(); }
private void canvas_Paint(object sender, PaintEventArgs e) { SolidBrush backBrush = new SolidBrush(BackColor); e.Graphics.FillRectangle(backBrush, canvas.ClientRectangle); backBrush.Dispose(); Rectangle a = new Rectangle(10, 20, 30, 30); Graphics g = e.Graphics; for (int i = 0; i < _figures.Count; i++) { Figure fig = _figures.getAt(i); fig.draw(g); } if (canvas.Image != null) { Rectangle r = canvas.ClientRectangle; Graphics g1 = e.Graphics; Graphics g2 = Graphics.FromImage(canvas.Image); IntPtr dc1 = g1.GetHdc(); IntPtr dc2 = g2.GetHdc(); BitBlt(dc2, 0, 0, r.Width, r.Height, dc1, 0, 0, 0x00CC0020); g1.ReleaseHdc(dc1); g2.ReleaseHdc(dc2); g2.Dispose(); } }