示例#1
0
        private void AssociatedObject_StateChanged(object sender, EventArgs e)
        {
            if (AssociatedObject.WindowState == WindowState.Normal)
            {
                //Point screenPoint = CursorInfo.GetCursorPosition();
                //Left = screenPoint.X - (AssociatedObject.Width / 2);
                //double diff = screenPoint.Y - SystemParameters.WorkArea.Height;
                //Top = screenPoint.Y - AssociatedObject.Height - diff;

                System.Drawing.Point dp = System.Windows.Forms.Cursor.Position;
                System.Windows.Point wp = new System.Windows.Point(dp.X, dp.Y);
                // マウス座標から論理座標に変換
                PresentationSource src = PresentationSource.FromVisual(AssociatedObject);
                System.Windows.Media.CompositionTarget ct = src.CompositionTarget;
                System.Windows.Point p = ct.TransformFromDevice.Transform(wp);
                Left = p.X - (AssociatedObject.Width / 2);
                if (StaticValues.SystemSetting.IsOpenOnTaskBar)
                {
                    double diff = p.Y - SystemParameters.WorkArea.Height;
                    Top = p.Y - AssociatedObject.Height - diff;
                }
                else
                {
                    if ((p.Y + AssociatedObject.Height) > SystemParameters.WorkArea.Height)
                    {
                        double diff = p.Y - SystemParameters.WorkArea.Height;
                        Top = p.Y - AssociatedObject.Height - diff;
                    }
                    else
                    {
                        Top = p.Y;
                    }
                }
            }
        }
示例#2
0
        private void AssociatedObject_Loaded(object sender, RoutedEventArgs e)
        {
            //AssociatedObject.WindowState = WindowState.Minimized;

            System.Drawing.Point dp = System.Windows.Forms.Cursor.Position;
            System.Windows.Point wp = new System.Windows.Point(dp.X, dp.Y);
            // マウス座標から論理座標に変換
            PresentationSource src = PresentationSource.FromVisual(AssociatedObject);

            System.Windows.Media.CompositionTarget ct = src.CompositionTarget;
            System.Windows.Point p = ct.TransformFromDevice.Transform(wp);
            Left = p.X - (AssociatedObject.Width / 2);
            double diff = p.Y - SystemParameters.WorkArea.Height;

            Top = p.Y - AssociatedObject.Height - diff;
        }