Esempio n. 1
3
        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();
        }
Esempio n. 2
0
        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();
            }
        }