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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> WPF динамическая линия 
:(
    Опции темы
Pritorian
Дата 3.4.2010, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте. Начал разбираться в WPF и возник такой вопрос:
допустим, есть на форме два элипса. Необходимо между ними рисовать линию. Причём элипсы можно таскать и линия должна перемещаться соответственно. Вопрос в следующем - нужно ли писать полностью перерисовку линий, или этот процесс как-то упрощён? Если можно, пример проекта/кода был бы очень кстати.  Ну или хотя-бы отсылка на литературу (если можно не на абстрактный МСДН а на статью).

Спасибо за внимание.
PM MAIL   Вверх
WolfTheGrey
Дата 6.4.2010, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 207
Регистрация: 21.1.2009
Где: forum.vingrad.ru

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



Както так:
Код

<Canvas Width="600" Height="800">
        <Ellipse Name="clipsa" Stroke="Black" MouseMove="clipsa_MouseMove" StrokeThickness="2" Width="50" Height="75"
                 Canvas.Left="0" Canvas.Top="211" Fill="Blue" Opacity="0.4" MouseLeftButtonDown="clepka_MouseDown" MouseLeftButtonUp="clepka_MouseUp" />
        <Ellipse Name="clepka" Stroke="Black" MouseMove="clepka_MouseMove" StrokeThickness="2" Width="50" Height="75" Canvas.Left="113" 
                 Canvas.Top="33" Fill="Blue" Opacity="0.4" MouseLeftButtonDown="clepka_MouseDown" MouseLeftButtonUp="clepka_MouseUp" />
        
        <Line Stroke="Black" StrokeThickness="2" Name="palka"
              X1="{Binding ElementName=clipsa, Path=Canvas.Left.X}" :)
              Y1="{Binding ElementName=clipsa, Path=Canvas.Left.Y}" :)
              X2="{Binding ElementName=clepka, Path=Canvas.Left.X}" :)
              Y2="{Binding ElementName=clepka, Path=Canvas.Left.Y}"/> :)
    </Canvas>


но к сожалению без процедурного кода не обошлось:
Код

        Point clipsa_point;
        Point clepca_point;
        bool is_mouse_enter = false; \\захват мыши,
        public DragElipse()
        {
            InitializeComponent();
        }

        private void clepka_MouseMove(object sender, MouseEventArgs e)
        {
            Point pt = e.GetPosition(this);
            palka.X1 = pt.X;
            palka.Y1 = pt.Y;
            Ellipse el = (Ellipse)e.Source;
            if (is_mouse_enter)
            {
                Canvas.SetLeft(el, pt.Y);
                Canvas.SetRight(el, pt.X);  \\больше ни какого способа не придумал, чтоб сдвинуть с места елипс.
            }
            else
                clepca_point = pt;
        }

        private void clipsa_MouseMove(object sender, MouseEventArgs e)
        {
            Point pt = e.GetPosition(this);
            palka.X2 = pt.X;
            palka.Y2 = pt.Y;

            Ellipse el = (Ellipse)e.Source;
            if (is_mouse_enter)
            {
                Canvas.SetLeft(el, pt.Y);
                Canvas.SetRight(el, pt.X);
            }
            else
                clepca_point = pt;
        }

        private void clepka_MouseDown(object sender, MouseButtonEventArgs e)
        {
            is_mouse_enter = true;
        }

        private void clepka_MouseUp(object sender, MouseButtonEventArgs e)
        {
            is_mouse_enter = false;
        }


Добавлено через 2 минуты и 35 секунд
подскажите как определить нажатость мыши при помощи:
Код

MouseButtonState.Pressed


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


 




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


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

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