Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
57 / 1 / 0
Регистрация: 30.09.2013
Сообщений: 46
1

Изменение размеров нарисованной фигуры

17.07.2018, 18:23. Показов 4007. Ответов 6
Метки нет (Все метки)

Доброго времени суток! Возникла проблема с изменением размеров нарисованной фигуры. Необходимо увеличить фигуру при нажатии на кнопку "+" и уменьшить при нажатии на кнопку "-", а так же вернуть исходный размер при нажатии на кнопку "исходная". Примеров подобных я не нашел. Надеюсь на Вашу отзывчивость.
Прога работает так: выбираем цвет, затем толщину, потом жмем КНПр или КНПв, кликаем по форме для рисования. Редактирование: если фигура уже нарисована изменяем цвет, толщину и жмем на форму для рисования.
0
Вложения
Тип файла: rar WindowsFormsApplication 17 07 18.rar (51.2 Кб, 20 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2018, 18:23
Ответы с готовыми решениями:

Сохранение нарисованной фигуры
Всем привет! У меня вот возник такой вопрос, как можно сохранить нарисованый обьект на winforme....

Изменение размеров элементов, при изменение размеров формы
Доброго времени суток, подскажите, как в VS2016 реализовать подобное, а именно: Имеются следующая...

Перемещение нарисованной фигуры по форме
Как осуществить перемещение фигуры? Например, квадрата.

Перемещение фигуры нарисованной DrawPolygon
Суть проблемы такая. Нужно по двойному клику нарисовать фигуру (в моем случае звезда красного цвета...

6
553 / 530 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
17.07.2018, 19:21 2
Лучший ответ Сообщение было отмечено dgyda как решение

Решение

Цитата Сообщение от dgyda Посмотреть сообщение
Необходимо увеличить фигуру при нажатии на кнопку "+" и уменьшить при нажатии на кнопку "-"
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
float KNPvScale = 1;
 
struct KNPv
{
    public void vvod(PaintEventArgs e, int xk, int yk,Pen p, float Scale)
    {
        ...
        Point p8 = new Point(x8, y8);
 
        e.Graphics.ScaleTransform(Scale, Scale);
 
        e.Graphics.DrawLine(p, p1, p2);
        ...       
    }
}
 
// Увеличиваем масштаб
        private void button3_Click(object sender, EventArgs e)
        {
            KNPvScale+=0.1f; 
            Invalidate();
        }
// Уменьшаем масштаб
        private void button4_Click(object sender, EventArgs e)
        {
            KNPvScale-= 0.1f;
            Invalidate();
        }
// Сброс на "исходный"
        private void button5_Click(object sender, EventArgs e)
        {
            KNPvScale = 1;
            Invalidate();
        }
Добавлено через 2 минуты
ЗЫ. Решение так себе. Сделано, чтобы минимизировать изменения в существующем коде. По уму, нужно поле Scale создавать в классе и изменять его. Но для этого нужно код переделывать, а мне, если честно, лень... Уж извиняйте!
1
57 / 1 / 0
Регистрация: 30.09.2013
Сообщений: 46
17.07.2018, 20:46  [ТС] 3
Спасиб, работает!. только происходит смещение при рисовании следующих объектов. как с этим совладать?

Добавлено через 30 секунд
Shogun31337, Спасиб, работает!. только происходит смещение при рисовании следующих объектов. как с этим совладать?
0
553 / 530 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
17.07.2018, 21:00 4
Лучший ответ Сообщение было отмечено dgyda как решение

Решение

Цитата Сообщение от dgyda Посмотреть сообщение
происходит смещение при рисовании следующих объектов. как с этим совладать?
C#
1
2
3
e.Graphics.TranslateTransform(-xk, -yk);
e.Graphics.ScaleTransform(Scale, Scale, MatrixOrder.Append);                
e.Graphics.TranslateTransform(xk, yk, MatrixOrder.Append);
1
57 / 1 / 0
Регистрация: 30.09.2013
Сообщений: 46
17.07.2018, 21:08  [ТС] 5
Shogun31337, Спасибо, мужик! все отлично работает, а где инфу более подробную о методах graphics почерпнуть? в тех книгах что нашел только поверхность, а в msdn без особых пояснений
0
57 / 1 / 0
Регистрация: 30.09.2013
Сообщений: 46
17.07.2018, 21:20  [ТС] 6
Полный исходник, может кому пригодится
1
Вложения
Тип файла: rar WindowsFormsApplication 17 07 18.rar (78.5 Кб, 60 просмотров)
553 / 530 / 225
Регистрация: 02.11.2016
Сообщений: 1,538
17.07.2018, 21:23 7
Цитата Сообщение от dgyda Посмотреть сообщение
где инфу более подробную о методах graphics почерпнуть? в тех книгах что нашел только поверхность, а в msdn без особых пояснений
Ну уж не знаю чем тебе msdn не угодил... И все методы указаны и примеры к каждому методу есть... Можешь еще тут глянуть: Объекты Graphics и Drawing в Windows Forms
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.07.2018, 21:23

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Задать координаты нарисованной фигуры
Здравствуйте! У меня такая проблема: я рендомно задала координаты овалу, чтобы при каждом щелчке по...

Изменить размер нарисованной фигуры
Я рисую фигуру произвольной формы. Необходимо увеличить или уменьшить её. (см. вложения, во 2...

Как выполнить заливку нарисованной фигуры?
Создана программа - графический редактор. Допустим нарисован овал, как выполнить его заливку? С# ...

Определение курсора внутри нарисованной фигуры
Программа автоматически рисует правильный многоугольник с заданным кол-вом вершин. Цель,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.