Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как узнать координаты Grid-a? 
V
    Опции темы
jenik15
Дата 18.12.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Подскажите, пожалуйста, как сделать следующее: Я хочу создать такую же фичу как в последнем Word, чтоб грид при приближении к нему мыши ставал прозрачней. Загвоздка и вопрос в том, как узнать координаты углов Grid-а относительно Grid Holder-a? А далее я просто буду узнавать расстояние от позиции мыши к ближайшему углу.

user posted image
PM MAIL   Вверх
tol05
Дата 18.12.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 3
Всего: 170



Цитата(jenik15 @  18.12.2009,  21:05 Найти цитируемый пост)
Я хочу создать такую же фичу как в последнем Word, чтоб грид при приближении к нему мыши ставал прозрачней. 

1. Что подразумавается под "последний Word" ?
2. "при приближении" ???

Цитата(jenik15 @  18.12.2009,  21:05 Найти цитируемый пост)
как узнать координаты углов Grid-а относительно Grid Holder-a?

3. Что представляет из себя Grid Holder? Это иногда бывает важно..
4. Как Вы помещаете Grid в Grid Holder?


Это сообщение отредактировал(а) tol05 - 18.12.2009, 22:39


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
jenik15
Дата 18.12.2009, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Microsoft Office Word 2007. при отдалении от меню прозрачность угасает

user posted image

Grid Holder имеет тип Grid. 
Grid добавлен как дочерний к Grid Holder-у.
Позицию мыши я могу получаю так:

Код

private void gridHolder_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
            var position = e.GetPosition(this.gridHolder);
//Здесь нужна позиция углов дочернего gridHolder-у grid, чтоб получить
//растояние 
}



Это сообщение отредактировал(а) jenik15 - 18.12.2009, 22:59
PM MAIL   Вверх
tol05
Дата 19.12.2009, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 3
Всего: 170



вам для решения задачи нужно только одно: знать, насколько указатель мыши удален от центра дочернего грида
причем равноудален

Код

private void gridHolder_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
{
            Point p = e.GetPosition(childGrid);

            Point center = new Point(childGrid.ActualWidth / 2, childGrid.ActualHeight / 2);
            Vector v = p - center;

            childGrid.Opacity = childGrid.ActualWidth/v.Length; 
}


Это сообщение отредактировал(а) tol05 - 19.12.2009, 00:10


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
jenik15
Дата 19.12.2009, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Спасибо с прозрачностью это работает отлично. Только есть еще одна задача, что требует получить расстояние относительно родительского Gridholder-а. При приближении мыши к дочернему grid мне нужно узнать, где будет выгодней его разместить в верхнем левом углу или в верхнем правом. А это требует, как я понимаю узнать расстояние относительно родительского grid-a.

Идея такова при приближении прозрачность угасает, а если приблизить слишком близко так будет принято решение о перемещении grid.
PM MAIL   Вверх
tol05
Дата 19.12.2009, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 3
Всего: 170



я не очень понял мысль.
Цитата(jenik15 @  19.12.2009,  12:41 Найти цитируемый пост)
При приближении мыши к дочернему grid мне нужно узнать, где будет выгодней его разместить в верхнем левом углу или в верхнем правом.

что именно разместить? дочерний грид уже размещен в родительском, как я понимаю. Тем не менее... 

Вы можете узнать координаты любой точки дочернего элемента относительно его родителя так:
Код

Point leftTop = childGrid.TranslatePoint(new Point(0, 0), grid);//левый верхний угол дочернего грида
Point rightBottom = childGrid.TranslatePoint(new Point(childGrid.ActualWidth, childGrid.ActualWidth), grid); //правый нижний угол дочернего грида
//проверка
Point parentMousePoint = e.GetPosition(grid);
Title = string.Format("rightBottom.X={0} rightBottom.Y={1} parent.X={2} parent.Y={3}", rightBottom.X, rightBottom.Y, parentMousePoint.X, parentMousePoint.Y);



--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
jenik15
Дата 20.12.2009, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 29.1.2008

Репутация: нет
Всего: нет



Цитата

что именно разместить? дочерний грид уже размещен в родительском, как я понимаю. Тем не менее..

Хоть он и размещен, но горизонтальное и вертикальное положение я ему могу задать.
 smile 

Огромное спасибо. 

Код

Point leftTop = childGrid.TranslatePoint(new Point(0, 0), grid);


именно то, что мне нужно.
PM MAIL   Вверх
tol05
Дата 20.12.2009, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 3
Всего: 170



тогда он не "размещен", а "помещен" ) Размещение подразумевает позиционирование.   

не за что 


Это сообщение отредактировал(а) tol05 - 20.12.2009, 10:02


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0475 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.