Уважаемые товарищи программисты! Подскажите своему начинающему коллеге. Есть объект класса, описывающий резистор. В нем задано сопротивление и определена картинка, отображающая резистор. Как сделать следующее: Необходимо при создании нового объекта резистор отобразить его картинку на форме, и реализовать её перетаскивание по форме? (P.S. Все это для последующей реализации "сцепления" группы резисторов в цепь и рассчета цепи) Можно ли перетаскивать картинку по форме или надо создать какой-нибудь контейнер, например панель, и перетаскивать картинку там? Буду очень признателен за помощь.
простой пример перетаскивания квадрата по форме с помощью мыши Code: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace WindowsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } public int mouse_x; public int mouse_y; protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); e.Graphics.DrawRectangle(new Pen(Brushes.Red), mouse_x, mouse_y, 20, 20); } private void Form1_MouseMove(object sender, MouseEventArgs e) { mouse_x = e.X; mouse_y = e.Y; Invalidate(); } } }
to cheater_man:Спасибо! Но как реализовать перетаскивание именно загруженной картинки по щелчку мыши??
С картинкой почти тоже самое. Опиши все по подробней, а то я тебя так не пойму. Каким методом загружаешь картинку?
Картинку я добавил в файл с ресурсами проекта. после создал класс Resistor в описании класса указал путь к картинке из ресурсов Code: namespace Circuit { class Resistor { Image ResistorImage =Circuit.Properties.Resources.ResistorPict; int resistance; } } После хочу добавить объект класса (чтоб при создании объекта на форме отрисовывалась картинка элемента, которую потом можно было перетаскивать по форме) Code: namespace Circuit { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void добавитьЭлементToolStripMenuItem_Click(object sender, EventArgs e) { Resistor Detail = new Resistor(); designerPanel.Invalidate(); } } } Но как отобразить картинку класса и перетаскивать ее по щелчку мыши??
Тут не так все просто как кажется, если тебе потом нужно делать расчеты по построенной тобой цепи, тебе нужно будет юзать контейнеры. При создании нового компонента пихаешь его в контейнер. И клас резистора должен будет наследовать клас Component.А отобразить компонент на форме это только пол дела. Что-то типо этого. Скинь свой проект может чем-то и помогу. Вот пример перемещения картинки по щелчку мыши Code: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace _23 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() == DialogResult.OK) { Image img = Image.FromFile(openFileDialog1.FileName); pictureBox1.Image = img; } } private void Form1_MouseMove(object sender, MouseEventArgs e) { if (coun == 1) { pictureBox1.Location = new System.Drawing.Point(e.X-50, e.Y-50); } } int coun=0; private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { if (coun == 0) coun++; else coun = 0; } } }
Хотел бы я скинуть проект, да там нет почти ничего пока. Недавно начал изучать С#, решил задачку поинтересней сделать, да и завис сразу. так что в проекте пока пусто. первый шаг дается с трудом...
Читай Джесс Либерти программирование на c# Трей Нэш C# 2008 краткий курс + source. И юзай msdn там все есть