Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685

Прямоугольник как при выборе элементов в проводнике windows

18.01.2011, 21:07. Показов 1572. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать на форме прямоугольник, аналогичный прямоугольнику, когда мышкой выбирают несколько элементов в проводнике путем зажатия левой кнопки мыши и растягивая его.
Вот так, в общем:
Миниатюры
Прямоугольник как при выборе элементов в проводнике windows  
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2011, 21:07
Ответы с готовыми решениями:

JQuery!? СЕЛЕКТОРЫ. Имеется несколько элементов img в div, как сделать чтоб при выборе 1-го остальные как-бы затухли?
ну не затухли, а хотябы поменяли свой цвет на красный, но чтоб тот параграф, по которому нажали остался своим цветом? код на фидле:...

Treeview как в проводнике windows
Добрый вечер, очень нужна Ваша помощь) Как реализовать создание дерева как в проводнике windows, папки и файлы.В файлах нельзя создавать...

Нужен элемент управления как в проводнике Windows 7
Есть ли в WPF ЭУ такой, как верхняя строка в проводнике Windows 7 - строка, состоящая из строк, разделённых стрелками, при нажатии на...

10
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
18.01.2011, 21:34
Лучший ответ Сообщение было отмечено как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
using System;
using System.Drawing;
using System.Windows.Forms;
 
namespace ForDummies {
    class Program {
        [STAThread]
        static void Main(string[] args) {
            Application.Run(new DummyForm());
        }
    }
    public class DummyForm : Form {
        private Point? _start;
        private Point _end;
        private Brush _brush = new SolidBrush(Color.FromArgb(100, 255, 0, 0));
        protected override void OnMouseDown(MouseEventArgs e) {
            _start = e.Location;
            base.OnMouseDown(e);
        }
        protected override void OnMouseUp(MouseEventArgs e) {
            _start = null;
            base.OnMouseUp(e);
        }
        protected override void OnMouseMove(MouseEventArgs e) {
            _end = e.Location;
            base.OnMouseMove(e);
            Invalidate();
        }
        protected override void OnPaint(PaintEventArgs e) {
            if (_start.HasValue)
                e.Graphics.FillRectangle(_brush, _start.Value.X, _start.Value.Y, _end.X - _start.Value.X, _end.Y - _start.Value.Y);
            base.OnPaint(e);
        }
    }
}
ответ: чуть-чуть подумать, возможно...
4
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
18.01.2011, 22:30  [ТС]
Mikant, к сожалению, мой уровень знаний пока не позволяет додуматься до такого вот кода, в частности, никогда еще не использовал слова base в коде и оператора '?' =(
Но, мне надо не просто нарисовать его, но и использовать примерно так же, как и в проводнике, только выбираться будут не файлы, а область экрана.
0
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
18.01.2011, 22:56
в таком случае резонное предложение: может быть начать с чего-то попроще, например с основ ООП? Наследование (это я про base), инкапсуляция, абстракция, полиморфизм... даже в вики есть очень грамотные статьи по этим темам!

зы. ? - в этом случае не оператор
ззы. уже год вижу тебя на форуме и твои вопросы, которые вполне мог бы я задавать (если б был менее фанатичным... как все)... нельзя такие штуки творить не зная основ языка, тех парадигм на которых всё это крутится, алгоритмики и пр. причем, если программирование действительно интересно и хочется связать с ним жизнь, то крайне желательно хотя бы простые задачи решать самому: по собственному опыту знаю, что честно списанное на экзамене (подсмотренное на форуме) не запоминается (особенно то, КАК это делалось). поверь, тише едешь - дальше будешь.
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
18.01.2011, 23:00  [ТС]
Это я понимаю, просто для всех разные пути обучения, например я, о чем я очень сожалею, не могу сидеть и читать учебник какой-то, я ставлю задачу, ищу способ выполнения, стараюсь в нем разобраться, далее применяю его там, где это нужно. Про основы знаю, именно теорию, но что делает base - не знал.
А задачи стараюсь делать сам, просто, из-за опыта (до универа в глаза не видел кода программы), очевидные решения для меня не всегда очевидны, стараюсь расширять свой кругозор в этом плане и, например то, до чего не мог додуматься полгода назад, сейчас делаю и понимаю довольно быстро, но это было в другой ветке программирования - клиент-серверного, а сейчас решил немного расширить свой старый проект - загрузчик изображений. %)
0
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
18.01.2011, 23:09
Понравился пример с полиморфным поведением. Как-то даже раньше и не задумывался так обрабатывать события формы
Вот немного изменил программу с использованием событий. Лучше такое рисовать через Polygon, ибо обычный прямоугольник рисуется только если у него конечная точка ниже и правее начальной.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System.Drawing;
using System.Windows.Forms;
 
namespace WindowsFormsTest {
    public sealed partial class MainForm : Form {
        // Цвет и толщина границы выделения
        private readonly Pen _borderPen = new Pen( Color.FromArgb( 128, 50, 150, 255 ), 1.6f );
 
        // Цвет выделения
        private readonly Brush _brush = new SolidBrush( Color.FromArgb( 32, 50, 150, 255 ) );
 
        // Текущая точка
        private Point _currentPoint;
 
        // Начальная точка
        private Point? _startPoint;
 
        public MainForm() {
            InitializeComponent();
 
            // Включаем буфферизацию, чтобы не моргало
            DoubleBuffered = true;
 
            // При нажатии мыши
            MouseDown += ( sender, args ) => {
                // Устанавливаем начальную точку
                _startPoint = args.Location;
            };
 
            // При движении мыши
            MouseMove += ( sender, args ) => {
                // Устанавливаем текущую точку
                _currentPoint = args.Location;
 
                // Перерисовываем форму
                Invalidate();
            };
 
            // При отпускании мыши
            MouseUp += ( sender, args ) => {
                // Прекратить рисование
                _startPoint = null;
            };
 
            // При перерисовке формы
            Paint += ( sender, args ) => {
                // Если задана начальная точка
                if ( _startPoint.HasValue ) {
                    // Получаем значение координаты
                    Point startPoint = _startPoint.Value;
 
                    // Координаты прямоугольника выделения
                    var points = new[] {
                        startPoint,
                        new Point( _currentPoint.X, startPoint.Y ),
                        _currentPoint,
                        new Point( startPoint.X, _currentPoint.Y ),
                    };
 
                    // Рисуем прямоугольник
                    args.Graphics.FillPolygon( _brush, points );
 
                    // Рисуем границу прямоугольника
                    args.Graphics.DrawPolygon( _borderPen, points );
                }
            };
        }
    }
}
1
 Аватар для Mikant
1322 / 995 / 127
Регистрация: 08.12.2009
Сообщений: 1,299
18.01.2011, 23:18
Цитата Сообщение от Unril Посмотреть сообщение
ибо обычный прямоугольник рисуется только если у него конечная точка ниже и правее начальной
блин, я так надеялся, что он это сам сделает))

Не по теме:

можт стереть пост? хм)))))

0
85 / 84 / 8
Регистрация: 03.11.2009
Сообщений: 723
19.01.2011, 15:47
Цитата Сообщение от Mikant Посмотреть сообщение
по собственному опыту знаю, что честно списанное на экзамене (подсмотренное на форуме) не запоминается (особенно то, КАК это делалось). поверь, тише едешь - дальше будешь.

Не по теме:

ps: я уже довольно давно пытаюсь изучать программирование. наверное уже год. все идет медленно, так как я самоучка, и по большей части некто не помогает кроме книг( далеко я так и не продвинулся, хотя очень интересно и хотел бы связать свою жизнь с этим), правда поздновато уже наверное для изучение, уже 23, а не 15) дело не в этом... может я просто что то не так делаю, не то читаю???
в идеале, что бы кто нить давал задания и если что подсказывал...

0
146 / 130 / 27
Регистрация: 20.12.2010
Сообщений: 242
19.01.2011, 16:16
Цитата Сообщение от Sequd Посмотреть сообщение

Не по теме:

ps: я уже довольно давно пытаюсь изучать программирование. наверное уже год. все идет медленно, так как я самоучка, и по большей части некто не помогает кроме книг( далеко я так и не продвинулся, хотя очень интересно и хотел бы связать свою жизнь с этим), правда поздновато уже наверное для изучение, уже 23, а не 15) дело не в этом... может я просто что то не так делаю, не то читаю???
в идеале, что бы кто нить давал задания и если что подсказывал...

Ты прежде всего учишься для себя. Если тебе это интересно, то учи и возраст тут не причем. Мне вот за 30, не программер по образованию, и не работаю программистом, но тем не менее мне очень нравится создавать программы. Это мое хобби. Ну и кроме того, есть несколько идей, которые хотелось бы реализовать, и которые могут принести денег. Но знаний катастрофически не хватает, потому я и пришел на этот форум. Но я смотрю, что и мои скромные знания помогают некоторым людям, плюсики не просто так ставят.

Ну а по заданиям, решай задачки другим пользователям - отличная практика освоить язык.
Даже если ты не успел с ответом - главное решить их для себя. Если уже есть решение, скопируй в студию, поиграйся с разными параметрами, и запоминаться будет гораздо лучше.
2
 Аватар для Alex_Sabaka
638 / 499 / 77
Регистрация: 28.07.2010
Сообщений: 895
19.01.2011, 21:16
Поправка: не "скопируй", а лучше сам перепиши в студию, так еще легче запомниться.
0
19.01.2011, 23:11

Не по теме:

а теперь мы все должны обняться и расплакаться... )))

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.01.2011, 23:11
Помогаю со студенческими работами здесь

как открыть ftp-сайт в проводнике windows
На работе всё нормально открывался в проводнике, в адресной строке набирал ftp://логин:пароль@92.ХХХ.ХХХ.ХХХ:21 Домой пришёл в браузере...

Как при выборе одного из элементов ComboBox сделать так, чтобы внизу появлялись перечень RadioButton?
Добрый вечер? Есть выпадающий список, как при выборе одного из вариантов сделать так, чтобы внизу появлялись перечень RadioButton? ...

Как на форму вывести такое дерево каталогов как в обычном проводнике Windows
вот как на форму вывести такое дерево каталогов как в обычном проводнике windows? есть такой элемент FolderBrowserDialog - но он...

Lenovo G50 - При установке windows 8 - 10 при выборе языка не работает клавиатура и тачпад
изначально покупался без системы, успешно установил 7-ку на ноут, все прошло без проблем, но потом когда захотел поставить 8-10-ку при...

Нужно чтоб, при выборе Область — автоматом поднимался список Регионов, при выборе Регион — населенные пункты
Доброго времени суток! Подскажите, пожалуйста! Есть набор данных: Область(2 значения), Регион(2*10), населенный пункт, номер...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru