private bool FoiExecutadoDrop(DragDropElement elemento, WrapPanel areaDrop)
        {
            var elementoCentroX   = elemento.ActualWidth / 2;
            var elementoCentroY   = elemento.ActualHeight / 2;
            var pontoOndeFoiSolto = elemento.TransformToAncestor(CanvasBalanca).Transform(new Point(0, 0));

            // centraliza ponto de detecção para centro do elemento
            pontoOndeFoiSolto.X += elementoCentroX;
            pontoOndeFoiSolto.Y += elementoCentroY;

            var posicaoAreaDrop = areaDrop.TransformToAncestor(CanvasBalanca).Transform(new Point(0, 0));

            return(pontoOndeFoiSolto.X > posicaoAreaDrop.X &&
                   pontoOndeFoiSolto.X < (posicaoAreaDrop.X + areaDrop.ActualWidth) &&
                   pontoOndeFoiSolto.Y > posicaoAreaDrop.Y &&
                   pontoOndeFoiSolto.Y < (posicaoAreaDrop.Y + areaDrop.ActualHeight));
        }
        public bool AdicionarElementoQuadro(DragDropElement elementoDropado)
        {
            var operacao = elementoDropado.Child as OperacaoArrastavel;

            var equacaoAtual = this.ObterViewModel().EquacaoEmFaseDeResolucao;

            if (FoiExecutadoDrop(elementoDropado, AreaDropEsquerda))
            {
                AplicarOperacaoEReavaliarObjetivo(operacao, Lado.Esquerdo, equacaoAtual);
                return(true);
            }

            //   if (FoiExecutadoDrop(elementoDropado, AreaDropDireita))
            //    {
            //       AplicarOperacaoEReavaliarObjetivo(operacao, Lado.Direito, equacaoAtual);
            //       return true;
            //    }

            return(false);
        }
예제 #3
0
        public bool AdicionarElementoQuadro(DragDropElement elementoDropado)
        {
            var peso = elementoDropado.Child as TrianguloArrastavel;

            var equacaoEmConstrucao = this.ObterViewModel().EquacaoEmConstrucao;

            if (FoiExecutadoDrop(elementoDropado, AreaDropEsquerda))
            {
                AdicionarPesoEReavaliarObjetivo(peso, Lado.Esquerdo, equacaoEmConstrucao);
                return(true);
            }

            /*
             * if (FoiExecutadoDrop(elementoDropado, AreaDropDireita))
             * {
             *  AdicionarPesoEReavaliarObjetivo(peso, Lado.Direito, equacaoEmConstrucao);
             *  return true;
             * }
             */
            return(false);
        }