private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
        {
            System.IO.Stream myStream = null;

            try
            {
                if ((myStream = openFileDialog1.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        //myWindow.background = new Bitmap(myStream);     //bitmapka tego okienka z pliku
                        BitmapObject new_bo = new BitmapObject();
                        new_bo.bitmap = new Bitmap(myStream);
                        new_bo.name   = "Stan " + m_parent.PanelWindows[m_WObject].bitmaps[m_OBitmap].bitmap.Count.ToString();
                        new_bo.state  = m_parent.PanelWindows[m_WObject].bitmaps[m_OBitmap].bitmap.Count;
                        m_parent.PanelWindows[m_WObject].bitmaps[m_OBitmap].bitmap.Add(new_bo);
                    } //using
                }     //if
            }         //try
            catch (Exception ex)
            {
                MessageBox.Show("Błąd: Nie mogę przeczytać pliku ! Oryginał: " + ex.Message);
            }//catch
            finally
            {
                ImageList imageListSmall = new ImageList();
                listView1.Clear();
                listView1.SmallImageList = null;
                foreach (BitmapObject bo in m_parent.PanelWindows[m_WObject].bitmaps[m_OBitmap].bitmap)
                {
                    ListViewItem item = listView1.Items.Add(bo.name);
                    imageListSmall.Images.Add(bo.bitmap);
                    item.ImageIndex = bo.state;
                    item.Tag        = bo;

                    //listView1.Items.Add(bo.name);
                } //foreach
                listView1.SmallImageList = imageListSmall;
            }     //finally
        }
        private void toolStripButton3_Click(object sender, EventArgs e)                                                                                 //kopiujemy bitmapkę tworząc nowy "stan"
        {
            BitmapObject selected_bo = m_parent.PanelWindows[m_WObject].bitmaps[m_OBitmap].bitmap[listView1.Items.IndexOf(listView1.SelectedItems[0])]; //Okienko zawierające wybrany obiekt
            BitmapObject new_bo      = BitmapObject.Copy(selected_bo);

            new_bo.name  = selected_bo.name + " kopia";
            new_bo.state = selected_bo.state + 1;
            m_parent.PanelWindows[m_WObject].bitmaps[m_OBitmap].bitmap.Add(new_bo);

            ImageList imageListSmall = new ImageList();

            listView1.Clear();
            foreach (BitmapObject bo in m_parent.PanelWindows[m_WObject].bitmaps[m_OBitmap].bitmap)
            {
                ListViewItem item = listView1.Items.Add(bo.name);
                imageListSmall.Images.Add(bo.bitmap);
                item.ImageIndex = bo.state;
                item.Tag        = bo;

                //listView1.Items.Add(bo.name);
            }//foreach
            listView1.SmallImageList = imageListSmall;
        }
Exemple #3
0
        private void oFDObjectBitmap_FileOk(object sender, CancelEventArgs e)
        {
            System.IO.Stream myStream = null;

            try
            {
                if ((myStream = oFDObjectBitmap.OpenFile()) != null)
                {
                    using (myStream)
                    {
                        //myWindow.background = new Bitmap(myStream);     //bitmapka tego okienka z pliku
                        WindowObject wo = new WindowObject();            //tworzymy nowy obiekt
                        wo.x = 0;
                        wo.y = 0;

                        wo.bitmap = new List <BitmapObject>();
                        BitmapObject bo = new BitmapObject();
                        bo.bitmap = new Bitmap(myStream);

                        wo.size_x = bo.bitmap.Width;
                        wo.size_y = bo.bitmap.Height;

                        bo.state = 0;
                        bo.name  = "Stan" + bo.state.ToString();     //dodajemy bitmapkę z odpowiednią nazwą
                        wo.bitmap.Add(bo);

                        int temp = PanelWindows.FindIndex(
                            delegate(Window w)
                        {
                            return(w.name == treeView1.SelectedNode.Text);
                        }      //delegate
                            ); //to wyszukuje na liście element o nazwie jak wybrana w treeview

                        if (PanelWindows[temp].bitmaps == null)
                        {
                            wo.name = PanelWindows[temp].name + "_0";
                        }
                        else
                        {
                            wo.name = PanelWindows[temp].name + "_" + PanelWindows[temp].bitmaps.Count.ToString();
                        }
                        PanelWindows[temp].bitmaps.Add(wo);
                    } //using
                }     //if
            }         //try
            catch (Exception ex)
            {
                MessageBox.Show("Błąd: Nie mogę przeczytać pliku ! Oryginał: " + ex.Message);
            } //catch
            finally
            {
                //Poniższe odświeża widok rzewka i w zamierzeniu miało pozostawiac zaznaczone to co ostatnio. Nie działe niestety.
                String temp_node = treeView1.SelectedNode.Text;

                treeView1.Nodes.Clear();
                foreach (Window i in PanelWindows)
                {
                    WindowObject[]  two = i.bitmaps.ToArray();
                    List <TreeNode> tn  = new List <TreeNode>();
                    foreach (WindowObject ttw in two)
                    {
                        TreeNode ttn = new TreeNode(ttw.name);
                        tn.Add(ttn);
                    } //foreach

                    TreeNode[] array = tn.ToArray();
                    TreeNode   tttn  = new TreeNode(i.name, array);
                    treeView1.Nodes.Add(tttn);
                } //foreach

                treeView1.SelectedNode = treeView1.Nodes[temp_node];

                /*
                 * int temp = PanelWindows.FindIndex(
                 * delegate(Window w)
                 * {
                 *     return w.name == treeView1.SelectedNode.Text;
                 * }//delegate
                 * );      //to wyszukuje na liście element o nazwie jak wybrana w treeview
                 */

                WindowObject[] two1 = PanelWindows[0].bitmaps.ToArray();
                foreach (WindowObject ttw in two1)
                {
                    Bitmap bmp = new Bitmap(ttw.bitmap[0].bitmap);
                    Point  p   = new Point(ttw.x, ttw.y);

                    Graphics g = pBPanel.CreateGraphics();
                    g.DrawImage(bmp, p);
                } //foreach

                myStream.Close();
            } //finally
        }
Exemple #4
0
        private void pBPanel_MouseUp(object sender, MouseEventArgs e)
        {
            if (bHaveMouse && bEnableCut)
            {
                WindowObject wo = new WindowObject();           //tworzymy nowy obiekt z zaznaczonego kawałka
                wo.x = ptOriginal.X - pBPanel.Location.X;       //liczymy relatywne położenie ponieważ współrz. myszki mamy względem ekranu a w bitmapce mamy wsp. lokalne
                wo.y = ptOriginal.Y - pBPanel.Location.Y;
                if (ptLast.X > ptOriginal.X)
                {
                    wo.size_x = ptLast.X - ptOriginal.X;
                }
                else
                {
                    wo.size_x = ptOriginal.X - ptLast.X;
                }
                if (ptLast.Y > ptOriginal.Y)
                {
                    wo.size_y = ptLast.Y - ptOriginal.Y;
                }
                else
                {
                    wo.size_y = ptOriginal.Y - ptLast.Y;
                }

                int temp = PanelWindows.FindIndex(
                    delegate(Window w)
                {
                    return(w.name == treeView1.SelectedNode.Text);
                }      //delegate
                    ); //to wyszukuje na liście element o nazwie jak wybrana w treeview

                //Teraz trzeba policzyć rozmiar okienka do wycięcia. Współrzędne z myszki są w rozdzielczości rozciągniętej bitmapki a chccemy wydobyć odpowiadający fragment tej bitmapki
                float factor = (float)PanelWindows[temp].background.Width / (float)pBPanel.Width;
                wo.size_x = (int)((float)wo.size_x * factor);
                wo.x      = (int)((float)wo.x * factor);
                factor    = (float)PanelWindows[temp].background.Height / (float)pBPanel.Height;
                wo.size_y = (int)((float)wo.size_y * factor);
                wo.y      = (int)((float)wo.y * factor);

                //wycinamy za pomoca prostokącika
                Rectangle rect = new Rectangle(wo.x, wo.y, wo.size_x, wo.size_y);
                //Bitmap tb = (Bitmap)pBPanel.Image.Clone();
                Bitmap tb  = (Bitmap)pBPanel.BackgroundImage.Clone();
                Bitmap tb2 = (Bitmap)tb.Clone(rect, tb.PixelFormat);

                wo.bitmap = new List <BitmapObject>();
                BitmapObject bo = new BitmapObject();
                bo.bitmap = (Bitmap)tb2.Clone();

                bo.state = 0;
                bo.name  = "Stan" + bo.state.ToString();    //dodajemy bitmapkę z odpowiednią nazwą
                wo.bitmap.Add(bo);
                if (PanelWindows[temp].bitmaps == null)
                {
                    wo.name = PanelWindows[temp].name + "_0";
                }
                else
                {
                    wo.name = PanelWindows[temp].name + "_" + PanelWindows[temp].bitmaps.Count.ToString();
                }
                PanelWindows[temp].bitmaps.Add(wo);

                //a teraz wyczyscimy wyciety fragment tla

                Bitmap   bmp         = new Bitmap(pBPanel.BackgroundImage.Width, pBPanel.BackgroundImage.Height); //tworzymy nowa bitmapke o odpowiednich rozmiarach. Nie mozna od razu zrobic bitmapy jako referencji do tla bo bedzie wyjatek
                Graphics rem_frame_g = Graphics.FromImage(bmp);                                                   //teraz grafika po ktorej bedziemy mazac
                rem_frame_g.DrawImage(pBPanel.BackgroundImage, new Point(0, 0));                                  //uzupelniamy bitmapke o wlasciwy obrazek
                SolidBrush rem_frame_sb = new SolidBrush(pBPanel.BackColor);
                rem_frame_g.FillRectangle(rem_frame_sb, rect);                                                    //rysujemy prostokacik w kolorze tla
                pBPanel.BackgroundImage = bmp;                                                                    //i calosc dopiero umieszczamy na ekranie
                ActiveWindow.background = bmp;

                //Na koniec trzeba przerysować wszystkie ikonki bo mazanie po tle usuwa je. Zrobimy to przy okazji odswiezania drzewka
                //Poniższe odświeża widok drzewka
                String temp_node = treeView1.SelectedNode.Text;
                LastSelectedTreeNode = null;

                treeView1.Nodes.Clear();
                foreach (Window i in PanelWindows)
                {
                    WindowObject[]  two = i.bitmaps.ToArray();
                    List <TreeNode> tn  = new List <TreeNode>();
                    foreach (WindowObject ttw in two)
                    {
                        TreeNode ttn = new TreeNode(ttw.name);
                        tn.Add(ttn);
                        if (ttn.Text == temp_node)
                        {
                            LastSelectedTreeNode = ttn;
                        }
                    }//foreach
                    TreeNode[] array = tn.ToArray();
                    TreeNode   tttn  = new TreeNode(i.name, array);
                    treeView1.Nodes.Add(tttn);
                    if ((LastSelectedTreeNode == null) && (tttn.Text == temp_node))
                    {
                        LastSelectedTreeNode = tttn;
                    }
                }//foreach

                //nabazgralismy tlo to teraz ikonki
                WindowObject[] two2 = ActiveWindow.bitmaps.ToArray();
                foreach (WindowObject ttw in two2)
                {
                    Bitmap   moved_bmp = new Bitmap(ttw.bitmap[0].bitmap);
                    Point    moved_p   = new Point(ttw.x, ttw.y);
                    Graphics moved_g   = pBPanel.CreateGraphics();
                    moved_g.DrawImage(moved_bmp, moved_p);
                } //foreach
                pBPanel.Refresh();
            }     //if

            if (LastSelectedTreeNode.Parent != null)
            {
                treeView1.SelectedNode = LastSelectedTreeNode.Parent;
            }
            else
            {
                treeView1.SelectedNode = LastSelectedTreeNode;
            }

            // Set internal flag to know we no longer "have the mouse".
            bHaveMouse = false;
            // If we have drawn previously, draw again in that spot
            // to remove the lines.

            if (ptLast.X != -1)
            {
                Point ptCurrent = new Point(e.X + pBPanel.Location.X, e.Y + pBPanel.Location.Y);
                MyDrawReversibleRectangle(ptOriginal, ptLast);
            }
            // Set flags to know that there is no "previous" line to reverse.
            ptLast.X     = -1;
            ptLast.Y     = -1;
            ptOriginal.X = -1;
            ptOriginal.Y = -1;

            bEnableCut = false;
        }
Exemple #5
0
 public static BitmapObject Copy(BitmapObject bo)
 {
     return((BitmapObject)bo.MemberwiseClone());
 }//Copy