Ejemplo n.º 1
0
        internal void Repaint(Rectangle IsInvalid, IView View, IPaintTo3D paintTo3D)
        {
            if (Settings.GlobalSettings.GetBoolValue("ActionFeedBack.UseZBuffer", true))
            {
                paintTo3D.UseZBuffer(true);
            }

            Color selectColor = frame.GetColorSetting("Select.SelectColor", Color.Yellow);   // die Farbe für die selektierten Objekte
            Color focusColor  = frame.GetColorSetting("Select.FocusColor", Color.LightBlue); // die Farbe für das Objekt mit dem Focus

            foreach (IView vw in frame.AllViews)
            {
                for (int i = 0; i < repaintObjects.Count; ++i)
                {
                    IFeedBack go = repaintObjects[i] as IFeedBack;
                    if (go != null)
                    {
                        go.PaintTo3D(paintTo3D);
                    }
                }

                bool oldSelectMode = paintTo3D.SelectMode;
                paintTo3D.SelectMode = true;
                for (int i = 0; i < paintAsSelected.Count; ++i)
                {
                    IGeoObjectImpl go = paintAsSelected[i] as IGeoObjectImpl;
                    if (go != null)
                    {
                        paintTo3D.SelectColor = selectColor;
                        paintTo3D.OpenList("feedback");
                        go.PaintTo3D(paintTo3D);
                        IPaintTo3DList list = paintTo3D.CloseList();
                        if (list != null)
                        {
                            paintTo3D.SelectedList(list, selectWidth);
                        }
                    }
                }
                paintTo3D.SelectMode = oldSelectMode;
            }

            if (paintAsTransparent.Count > 0)
            {
                paintTo3D.OpenList("feedback-transparent");

                foreach (IGeoObject go in paintAsTransparent)
                {
                    go.PaintTo3D(paintTo3D);
                }

                IPaintTo3DList displayList = paintTo3D.CloseList();

                paintTo3D.Blending(true);
                paintTo3D.List(displayList);
                paintTo3D.Blending(false);
            }
        }