コード例 #1
0
        private void InitPoignees(I2iObjetGraphique obj)
        {
            if (!obj.NoPoignees)
            {
                for (int n = 0; n < 8; n++)
                {
                    CPoignee p = new CPoignee(this, obj, Editeur);
                    switch (n)
                    {
                    case 0:
                        p.Alignement = ContentAlignment.TopLeft;
                        break;

                    case 1:
                        p.Alignement = ContentAlignment.TopCenter;
                        break;

                    case 2:
                        p.Alignement = ContentAlignment.TopRight;
                        break;

                    case 3:
                        p.Alignement = ContentAlignment.MiddleLeft;
                        break;

                    case 4:
                        p.Alignement = ContentAlignment.MiddleRight;
                        break;

                    case 5:
                        p.Alignement = ContentAlignment.BottomLeft;
                        break;

                    case 6:
                        p.Alignement = ContentAlignment.BottomCenter;
                        break;

                    case 7:
                        p.Alignement = ContentAlignment.BottomRight;
                        break;
                    }

                    p.RecalcPosition(CUtilRect.Normalise(obj.RectangleAbsolu));
                    m_poignees.Add(p);
                }
            }
        }
コード例 #2
0
        public virtual void MouseMove(Point ptLogique)
        {
            try
            {
                if (EnRedimentionnement)
                {
                    DateTime dtStart    = DateTime.Now;
                    Graphics g          = Editeur.CreateGraphics();
                    Bitmap   bmp        = CacheScreenShot;
                    CPoignee poigneeRef = m_poigneesEnCour[0];
                    foreach (CPoignee p in m_poigneesEnCour)
                    {
                        //Redessine le fond
                        Rectangle rctPoignee = p.DerniereZoneDisplayPourResize;
                        g.DrawImage(bmp, rctPoignee, rctPoignee, GraphicsUnit.Pixel);

                        //Déplace la poignée
                        int   nDecalX = p.PointDebutDrag.X - poigneeRef.PointDebutDrag.X;
                        int   nDecalY = p.PointDebutDrag.Y - poigneeRef.PointDebutDrag.Y;
                        Point ptMove  = new Point(ptLogique.X + nDecalX, ptLogique.Y + nDecalY);
                        p.MouseMove(ptMove);

                        //Dessine la poignée (et la zone de redimensionnement)
                        p.Draw(g);
                    }
                    g.Dispose();
                }
                else if (EnSelection)
                {
                    //Redessine la sélection dans une image
                    //Redessiner fond

                    Bitmap   bmp = CacheScreenShot;
                    Graphics g   = Editeur.CreateGraphics();
                    g.DrawImage(bmp, m_lastZoneDisplayDessinee, m_lastZoneDisplayDessinee, GraphicsUnit.Pixel);

                    Rectangle rct = GetRectangleSelection(ptLogique);
                    rct = CUtilRect.Normalise(new Rectangle(Editeur.GetDisplayPointFromLogical(rct.Location),
                                                            Editeur.GetDisplaySizeFromLogical(rct.Size)));
                    m_lastZoneDisplayDessinee = new Rectangle(rct.Location, new Size(rct.Width + 1, rct.Height + 1));
                    g.DrawRectangle(Pens.Blue, rct);

                    Brush bb = new SolidBrush(Color.FromArgb(50, Color.YellowGreen));
                    g.FillRectangle(bb, rct);
                    g.Dispose();
                    bb.Dispose();
                }
                //DEPLACEMENT
                else if (Control.MouseButtons == MouseButtons.Left &&
                         m_bMouseDownDansCetteFenetre && !m_bBlocageMove &&
                         (Math.Abs(m_ptStartDrag.X - ptLogique.X) > 3 ||
                          Math.Abs(m_ptStartDrag.Y - ptLogique.Y) > 3))
                {
                    m_bIsStartDragging = true;

                    if (m_waitSelection != null && m_waitSelection.Count > 0 && this.Contains(m_waitSelection[0]))
                    {
                        ControlReference = m_waitSelection[0];
                    }

                    m_waitSelection = null;

                    try
                    {
                        List <CDonneeDragDropObjetGraphique> datasDrag = new List <CDonneeDragDropObjetGraphique>();
                        bool bDrag = false;
                        foreach (I2iObjetGraphique obj in this)
                        {
                            if (obj.IsLock)
                            {
                                continue;
                            }
                            Point ptOffset = new Point(m_ptStartDrag.X - obj.RectangleAbsolu.Left, m_ptStartDrag.Y - obj.RectangleAbsolu.Top);
                            datasDrag.Add(new CDonneeDragDropObjetGraphique(Editeur.OrigineDragDropId, obj, ptOffset));
                            bDrag = true;
                        }
                        DataObject dataObj = new DataObject(datasDrag);
                        Editeur.CompleteDragDropData(dataObj, ToArray());
                        if (bDrag)
                        {
                            Editeur.DoDragDrop(dataObj, System.Windows.Forms.DragDropEffects.Move | System.Windows.Forms.DragDropEffects.Copy | DragDropEffects.Link);
                        }
                        m_bMouseDownDansCetteFenetre = false;
                    }
                    catch
                    {
                    }
                    m_bIsStartDragging = false;
                }
                else if (Control.MouseButtons != MouseButtons.Left)
                {
                    if (!Editeur.LockEdition)
                    {
                        bool bOnElementSelectione = false;
                        foreach (I2iObjetGraphique ele in this)
                        {
                            if (!ele.IsLock && CUtilRect.Normalise(ele.RectangleAbsolu).Contains(ptLogique))
                            {
                                bOnElementSelectione = true;
                                break;
                            }
                        }
                        if (bOnElementSelectione)
                        {
                            Cursor.Current = Cursors.SizeAll;
                        }
                        foreach (CPoignee poignee in ToutesLesPoignees)
                        {
                            if (!poignee.ObjetLie.IsLock && poignee.IsPointIn(ptLogique))
                            {
                                Cursor.Current = poignee.Cursor;
                                break;
                            }
                        }
                    }
                }
            }
            catch
            {
            }
        }