Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 23.12.2018
Сообщений: 26

2D графика и windows forms

28.12.2018, 12:04. Показов 3561. Ответов 3

Студворк — интернет-сервис помощи студентам
Здравствуйте! Учусь в универе, делаю работу по компьютерной графике "Афинные преобразование" . Работа сама по себе сделана, но с помощью ввода команд через консоль и модуля graphabc. Типа : для сдвига фигуры влево нажмите 1, для поворота по часовой стрелке нажмите 2.
Хотелось бы создать форму с кнопками, так чтоб при нажатии на кнопку от рисованная фигура перемещалась. Накидайте простенькую программу состоящую из одной кнопки и поля. Чтоб при нажатии кнопки на поле отрисовывалась какая-нибудь фигура, допустим квадрат или отрезок. Дальше я быстренько разберусь сам. Спасибо!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.12.2018, 12:04
Ответы с готовыми решениями:

Отрисовка графика в Windows Forms
Здравствуйте! Заранее извиняюсь, если создала эту тему не в том разделе. Проблема у меня следующая: У меня есть программа, которая...

Графика Windows Forms. Способы построения графиков функций и анимации
Visual C++. Работаю, разумеется, в Студии. Какие есть способы построения графиков функций на форме? И как работать с анимацией. Допустим,...

Графика в Windows forms - как избежать мерцания при анимации
Необходимо создать несложную движения анимацию в Windows Forms. Как сделать это наиболее эффективно, чтобы не возникало эффекта...

3
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
28.12.2018, 12:20
Лучший ответ Сообщение было отмечено observersilent как решение

Решение

Например так.

Pascal
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
{$reference 'System.Drawing.dll'}
 
uses
  System.Windows.Forms,
  System.Drawing;
  
var
  Form1: System.Windows.Forms.Form;
  Button1: System.Windows.Forms.Button;
 
procedure Button1_Click(Sender: Object; Args: System.EventArgs);
begin
  var gr := Form1.CreateGraphics;
  gr.DrawRectangle(new Pen(Color.Blue),new Rectangle(50,70,160,100));
end;
  
begin
  Button1 := new Button;
  Button1.Width := 120;
  Button1.Location := new System.Drawing.Point(0,0);
  Button1.Text := 'Прямоугольник'; 
  Button1.Click += Button1_Click;
  Form1 := new Form;
  Form1.Width:=320;
  Form1.Height:=240;
  Form1.Controls.Add(Button1); {Добавляем кнопку на форму}
  Application.Run(Form1);
end.
0
 Аватар для JuriiMW
5095 / 2661 / 2355
Регистрация: 10.12.2014
Сообщений: 10,060
28.12.2018, 12:29
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

Pascal
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
uses GraphABC;
 
var
  x := window.center.x;
  y := window.center.y;
  
procedure draw := Circle(x,y,10);
 
type
  tBlocks = class
    x0,y0,x1,y1 : Integer;
    reaction : Procedure;
 
    procedure draw := rectangle(x0,y0,x1,y1);
    constructor (x,y,w,h : Integer; r : Procedure);
    begin (x0,y0,x1,y1,reaction) := (x,y,x+w,y+h,r); draw; end;
    procedure select(x,y : Integer) := if x.inrange(x0,x1) and y.inrange(y0,y1) then reaction;
  end;
 
procedure up := y -= 10;
procedure down := y += 10;
procedure left := x -= 10;
procedure right := x += 10;
 
begin
  var blocks := new List<tBlocks>;
  blocks.Add(new tBlocks(40,15,20,20,up));
  blocks.Add(new tBlocks(15,40,20,20,left));
  blocks.Add(new tBlocks(40,40,20,20,down));
  blocks.Add(new tBlocks(65,40,20,20,right));
  draw;
  OnMouseDown := (x,y,mb) -> begin foreach var block in blocks do block.select(x,y); draw; end;
end.
1
1 / 1 / 0
Регистрация: 23.12.2018
Сообщений: 26
28.12.2018, 12:38  [ТС]
Спасибо очень понятный код! Теперь разберусь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.12.2018, 12:38
Помогаю со студенческими работами здесь

Ввод чисел, расчет по формулам и построение графика. Windows Forms или WPF
Подскажите пожалуйста какое руководство/книгу для WindowsForm. Только начинаю изучать и толком не знаю как и что. Немного читал...

Windows.Forms - Процедуры, цикл for и System.Windows.Forms.Button
Доброго времени суток. Есть WinForms программа: ... private ClickedButtonId, ClickedButtonX, ClickedButtonY:Integer; ...

Код для Windows Forms не работает в Web Forms?
В том году я делал лабораторки по Winforms. Естественно, они все у меня сохранились, и я полез в их код, вспоминать былое, так сказать,...

Масштабирование графика в PictureBox (Forms)
Скажите пожалйста - вот у меня строиться график по заданной в pictureBox функции, но отображается лишь &quot;кусок&quot; этого графика....

Выражение типа "System.Windows.Forms.Control" не может быть выражением типа "System.Windows.Forms.Menu"
Перевёл проект с версии 2008 на версию 2010 Наткнулся при компиляции на кучу не объявленных переменных и на 2 ошибки. Собственно с...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru