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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перетаскивание по форме 
V
    Опции темы
larinva
Дата 7.9.2010, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Всем привет! подскажите как в этом коде реализовать перетаскивание картинки по форме с Label и тому подобными контролами все понятно а вот с картинкой у меня затруднение 
Form2
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        Form1 f;
        private void button1_Click(object sender, EventArgs e)
        {
            f.X = 100;
            f.Y = 100;
            f.image = Image.FromFile(@"D:\roze.bmp");
            f.s = "Фигня456456456456456456456465";
            f.Invalidate();
        }
        
        public Form2(Form1 form1)
        {
            InitializeComponent();
            this.f = form1;
        }
    }
}


Form1
Код

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public int X { get; set; }
        public int Y { get; set; }
        public string s { get; set; }
        public Image image { get; set; }

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Form2 frm = new Form2(this);
            frm.Show();
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            if (image!=null && !string.IsNullOrWhiteSpace(s))
            {
                e.Graphics.DrawImage(image, X, Y);
            e.Graphics.DrawString(s, SystemFonts.DefaultFont, SystemBrushes.WindowText, new Point(X, Y));
            }
        }
    }
}

Суть кода из Form2 на Form1 добавляется картинка и ее нужно двигать по форме. Помогите очень нужно smile 
PM MAIL   Вверх
larinva
Дата 7.9.2010, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



кто нибудь отзовитесь
PM MAIL   Вверх
CYBERDREAM
Дата 7.9.2010, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

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



что то не пойму каким образом перетаскиванеи происходит



--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
larinva
Дата 7.9.2010, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



как раз и нужно добавить в этот проект перетаскивание
PM MAIL   Вверх
CYBERDREAM
Дата 7.9.2010, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

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



а зачем переопределен онпаинт? может засадить картинку в PictureBox лучше?

Суть описана тут http://blog.ninethsense.com/move-a-control...h-mose-on-form/


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
larinva
Дата 7.9.2010, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



онпайнт переопределен для того чтобы добавлять картику из form2 на form1. Я знаю как перемещать кнопки листбоксы и тому подобные контролы, проблема у меня именно в перемещении картинки которую добавляю с form1 на form2

Это сообщение отредактировал(а) larinva - 7.9.2010, 12:00
PM MAIL   Вверх
CYBERDREAM
Дата 7.9.2010, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

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



для этого переопределять думаю не обязательно. А в чем конкретно проблема?


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
gambit
Дата 7.9.2010, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***
Награды: 1



Профиль
Группа: Комодератор
Сообщений: 1359
Регистрация: 25.6.2006
Где: я?

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



larinva,
1. загнать картинку в свой класс, которому передавать координаты клика мыши, а он будет определять попал ли клик именно по картинке.
2. Держать в Form1 2 переменных типа Point (левый верхний и нижний правый угол картинки), и смотреть попадает ли мышь в данный диапазон.

Я бы пошел по первому пути, ибо он расширяем (например в дальнейшем надо будет поворачивать картинку, тогда надо будет добавить один метод в свой класс, а не городить непонятные действия в коде формы).

Если надо, то через пол часика накидаю пример
PM MAIL ICQ Skype   Вверх
larinva
Дата 7.9.2010, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Отлично gambit пример нужен  smile 
PM MAIL   Вверх
Fortnox
Дата 7.9.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

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



Время было, набросал пример.

Наш PictureBox:
Код

    public class MPictureBox: PictureBox
    {
        private int m_oldX;
        private int m_oldY;

        public int OldX
        {
            get { return m_oldX; }
        }

        public int OldY
        {
            get { return m_oldY; }
        }

        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);
            if (e.Button == MouseButtons.Left)
            {
                m_oldX = e.X;
                m_oldY = e.Y;
            }
        }

        protected override void OnMouseMove(MouseEventArgs e)
        {
            base.OnMouseMove(e);

            if (e.Button == MouseButtons.Left)
            {
                this.Left += (e.X - m_oldX);
                this.Top += (e.Y - m_oldY);
            }
        }
    }


И небольшой пример.

Присоединённый файл ( Кол-во скачиваний: 3 )
Присоединённый файл  WindowsFormsApplication1.zip 39,15 Kb
PM MAIL   Вверх
larinva
Дата 7.9.2010, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



если не сложно gambit скинте тоже примерчик smile 
PM MAIL   Вверх
CYBERDREAM
Дата 7.9.2010, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

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



в итоге используется то же самое что и по ссылке было. 
Fortnox, по ходу вариант этот не подойдет) от PictureBox отказался автор)


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
larinva
Дата 7.9.2010, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



да ты прав  CYBERDREAM через PictureBox не подходит

Это сообщение отредактировал(а) larinva - 7.9.2010, 14:23
PM MAIL   Вверх
CYBERDREAM
Дата 7.9.2010, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I think, there4 I am
***


Профиль
Группа: Завсегдатай
Сообщений: 1096
Регистрация: 31.10.2006
Где: CyberLand

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



larinva, колись, в чем проблема то, что именно не получается? Ты так и не ответил на мой вопроис smile 


--------------------
Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно)
Telegram, skype: kuchuk.artiom
PM MAIL WWW   Вверх
larinva
Дата 7.9.2010, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



CYBERDREAM прикрепил проект. Нужно реализовать перетаскивание роз по форме в этом у меня и заключается проблема 

Присоединённый файл ( Кол-во скачиваний: 10 )
Присоединённый файл  WindowsFormsApplication1.zip 321,74 Kb
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




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


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

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