Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
130 / 101 / 42
Регистрация: 01.03.2018
Сообщений: 291
1
Delphi 6-7

Рисование в PaintBox

15.10.2019, 16:50. Показов 1277. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: вывести на экран этапы сортировки
Сделал следующим образом:

На форме лежит PaintBox, TrackBar, Timer1

Delphi
1
2
3
4
5
//глобальные переменные
speed : integer; //скорость отрисовки
Counter : integer; // счетчик шагов
DrawArray : TdrawArray; // класс выводит на экран массив
Tarr : TarrayInfo; // массив в котором хранится информация о шагах сортировки
TrackBar1 - служит для изменения скорости
Delphi
1
2
3
4
5
......
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  speed := TrackBar1.Position;
end;
В таймере
1. увеличиваю счетчик шагов(под шагом понимается конкретный этап сортировки)
2. меняю время отрисовки

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := false;
  if Counter < Length(Tarr) then
  begin
    PaintBox1.Repaint;
    Timer1.interval := speed*2
    inc(Counter);
    Timer1.Enabled := true;
    Application.ProcessMessages;
  end
  else
   DrawArray.Destroy;
end;
В OnPaint вывожу
Delphi
1
2
3
4
5
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
  if (DrawArray <> nil) then
    PaintBox1.Canvas.Draw(0,0, DrawArray.GetBM(Tarr [Counter]));
end;
может это как то можно по-правильному написать? Я первый раз работаю с графикой..
смущает большое кол-во глобальных переменных
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.10.2019, 16:50
Ответы с готовыми решениями:

Рисование в PaintBox-e
Нужно осуществить рисование в пеинт боксе (как в обычном пеинте) при нажатии на кнопку мыши. Вот...

Рисование штрихпунктирной линией в PaintBox Delphi 10.1
Из этой темы вылез один вопрос по поводу рисования штрихпунктирной линии....

Рисование диаграммы в PaintBox сразу после нажатия на кнопку
нужно чтобы при нажатии на Button1 сразу вылазила диаграмма в PaintBox unit Unit1; interface...

Рисование на paintbox
Здравствуйте! Рисую на пэйнт боксе так: procedure TForm1.PaintBox1MouseDown(Sender: TObject;...

6
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
15.10.2019, 17:04 2
Непонятно зачем PaintBox, а например не Memo?
Посмотрите эти темы.
Визуализация сортировки массива пузырьком
Визуализация сортировки выбором
0
130 / 101 / 42
Регистрация: 01.03.2018
Сообщений: 291
15.10.2019, 17:50  [ТС] 3
да разницы нет, почему то решил выводить используя примитивную анимацию
Рисование в PaintBox
0
5784 / 4526 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
16.10.2019, 10:11 4
вот в принципе же чудно же было все, пока не пришел Application.ProcessMessages )))
зачем оно ? ))

Добавлено через 4 минуты
а анимация перелета карточек будет?
0
130 / 101 / 42
Регистрация: 01.03.2018
Сообщений: 291
16.10.2019, 10:42  [ТС] 5
Цитата Сообщение от krapotkin Посмотреть сообщение
Application.ProcessMessages
спасибо, убрал.
Я его добавлял, когда выводил изображение в цикле

Цитата Сообщение от krapotkin Посмотреть сообщение
а анимация перелета карточек будет?
пока не сделал, но планирую
0
5784 / 4526 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
16.10.2019, 10:47 6
класс

Добавлено через 20 секунд
было бы полезно разложить процесс прямо тут прямо по этапам )
0
Модератор
3629 / 2150 / 759
Регистрация: 15.11.2015
Сообщений: 8,631
16.10.2019, 15:40 7
Визуализация быстрой сортировки: https://youtu.be/ywWBy6J5gz8
0
16.10.2019, 15:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2019, 15:40
Помогаю со студенческими работами здесь

Рисование в PaintBox
Ребята, подскажите, пожалуйста, как сделать так, чтобы при рисовании эллипса предыдущий эллипс не...

Рисование на PaintBox
Здравствуйте! Возникла следующая проблема( Есть на форме 2 прозрачных PaintBox) На одном фон, на...

Рисование в paintbox
Нужно просто передать каждому пикселю указанный цвет, но это не работает: var i,o:integer; bm...

PaintBox рисование
Рисую на PaintBox(он на frame), но картинка не проявляется. Знаю про onpaint, но там писать...

Рисование линии на PaintBox
Подскажите как нарисовать линию на paintbox1 в delphi 7

PaintBox: рисование кривой при зажатой кнопке мыши
Разработайте приложение из одной формы, разместив на форме компонент Panel, а на Panel – компонент...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru