Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17

Не появляется рисунок

07.10.2013, 23:12. Показов 1676. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Задача такова: На экране должен перемещаться кораблик.
Объясните мне, пожалуйста, почему у меня на экране пусто? Я никак не разберусь, в чем ошибка...
Код привожу.
Delphi
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
70
71
72
73
74
75
76
77
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;
 
type
  TForm1 = class(TForm)
  Timer1: TTimer;
  procedure Timer1Timer(Sender: TObject);
  procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  x,y: integer;
 
implementation
 
{$R *.dfm}
  procedure Titanik(x,y: integer; color: TColor);
  const dx = 5; dy = 5;
  var
  buf: TColor;
  begin
  with form1.canvas do begin
  buf:=pen.Color;
  pen.Color:=color;
LineTo(x,y-2*dy);
LineTo (x+10*dx, y-2*dy);
LineTo (x+11*dx, y-3*dy);
LineTo (x+17*dx,y-3*dy);
LineTo (x+14*dx, y);
LineTo (x,y);
MoveTo(x+3*dx,y-2*dy);
LineTo (x+4*dx, y-3*dy);
LineTo (x+4*dx, y-4*dy);
LineTo (x+13*dx,y-4*dy);
LineTo (x+13*dx, y-3*dy);
MoveTo(x+5*dx,y-3*dy);
LineTo (x+9*dx, y-3*dy);
Rectangle (x+8*dx, y-4*dy, x+11*dx, y-5*dy);
Rectangle (x+7*dx, y-4*dy, x+8*dx, y-7*dy);
Ellipse (x+11*dx,y-2*dy,x+12*dx,y-1*dy);
Ellipse (x+13*dx, y-2*dy, x+14*dx, y-1*dy);
MoveTo(x+10*dx,y-5*dy);
LineTo(x+10*dx,y-10*dy);
MoveTo(x+17*dx,y-3*dy);
LineTo(x+10*dx,y-10*dy);
LineTo(x,y-2*dy);
pen.Color:=buf;
end;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Titanik(x,y,form1.color);
if x < Form1.ClientWidth
then x := x+5
else begin
y := Random(50) + 100;
end;
Titanik(x,y,clWhite);
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
x:=0; y:=100;
Form1.Color:=clNavy;
Timer1.Interval := 50;
end;
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.10.2013, 23:12
Ответы с готовыми решениями:

В задании при наведении курсора мыши на названии животного, в ячейке таблицы появляется рисунок этого животног
В задании при наведении курсора мыши на названии животного, в ячейке таблицы появляется рисунок этого животного. При уведении курсора в...

Растровый рисунок, как вставить bmp-рисунок в окно на полный экран?
Всем здрасьте! По книге которой я учусь , не понятно описано как вставить какую-нибудь картиночку в окно. Помогите мне , напишите как...

Графический Рисунок(нужно составить рисунок на С++ в форме желтой звезды)
нужно составить рисунок на С++ в форме желтой звезды

21
angstrom
07.10.2013, 23:24
Delphi
1
2
3
4
5
6
7
8
...
LineTo(x,y-2*dy);
LineTo (x+10*dx, y-2*dy);
LineTo (x+11*dx, y-3*dy);
LineTo (x+17*dx,y-3*dy);
LineTo (x+14*dx, y);
LineTo (x,y);
...
Что должен делать этот набор команд?
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
07.10.2013, 23:29  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
то должен делать этот набор команд?
Этот набор команд рисует прямые линии, из которых должен получится кораблик. Или я что то не догоняю?
0
angstrom
07.10.2013, 23:41
А где первоначальный MoveTo? Откуда начинается рисование?
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
07.10.2013, 23:45
Цитата Сообщение от slavdon63 Посмотреть сообщение
Titanik(x,y,form1.color);
Красивая цветовая гамма получается. Таким цветом надо было не кораблик рисовать, а того самого суслика
0
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
07.10.2013, 23:48  [ТС]
pen.Color:=color;
Вставил сюда, но все равно не рисуется, или опять неправильно?
LineTo(x,y-2*dy);
0
angstrom
07.10.2013, 23:52
Цитата Сообщение от angstrom Посмотреть сообщение
А где первоначальный MoveTo?
Команда MoveTo выставляет точку откуда начнётся рисование. Сейчас эта точка не определена.
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
07.10.2013, 23:54
Цитата Сообщение от slavdon63 Посмотреть сообщение
pen.Color:=color;
Карандашом синего цвета рисуем на синей бумаге?
0
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
07.10.2013, 23:59  [ТС]
Переписал немного процедуру, но все равно экран синий и ничего не происходит
Delphi
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
procedure Titanik(x,y: integer; color: TColor);
  const dx = 5; dy = 5;
  var
  buf: TColor;
  begin
  with form1.canvas do begin
  buf:=pen.Color;
  pen.Color:=color;
  Pen.Width:=5;
  Pen.Width:=5;
  Pen.Color:=clRed;
  MoveTo(5,5);
LineTo(x,y-2*dy);
LineTo (x+10*dx, y-2*dy);
LineTo (x+11*dx, y-3*dy);
LineTo (x+17*dx,y-3*dy);
LineTo (x+14*dx, y);
LineTo (x,y);
MoveTo(x+3*dx,y-2*dy);
LineTo (x+4*dx, y-3*dy);
LineTo (x+4*dx, y-4*dy);
LineTo (x+13*dx,y-4*dy);
LineTo (x+13*dx, y-3*dy);
MoveTo(x+5*dx,y-3*dy);
LineTo (x+9*dx, y-3*dy);
Rectangle (x+8*dx, y-4*dy, x+11*dx, y-5*dy);
Rectangle (x+7*dx, y-4*dy, x+8*dx, y-7*dy);
Ellipse (x+11*dx,y-2*dy,x+12*dx,y-1*dy);
Ellipse (x+13*dx, y-2*dy, x+14*dx, y-1*dy);
MoveTo(x+10*dx,y-5*dy);
LineTo(x+10*dx,y-10*dy);
MoveTo(x+17*dx,y-3*dy);
LineTo(x+10*dx,y-10*dy);
LineTo(x,y-2*dy);
pen.Color:=buf;
end;
end;
0
angstrom
08.10.2013, 00:07
А то что написал northener не учёл?
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
08.10.2013, 00:13  [ТС]
Вроде учел, что с цветом я напутал, но когда пишу так, все равно не работает...
Delphi
1
2
3
4
5
6
7
with form1.canvas do begin
  Pen.Color:=clRed;
  buf:=pen.Color;
  Pen.Width:=5;
  Pen.Width:=5;
  MoveTo(5,5);
LineTo(x,y-2*dy);
0
angstrom
08.10.2013, 00:15
Кинь проект в архиве, нет желания копировать с экрана.
Пишу на Delphi...иногда
 Аватар для cotseec
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
08.10.2013, 00:19
таймер включен?
код из заглавного поста, вот картинка
Миниатюры
Не появляется рисунок  
0
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
08.10.2013, 00:20  [ТС]
Во вложении. Спасибо!
Вложения
Тип файла: rar korablik.rar (203.5 Кб, 5 просмотров)
0
Пишу на Delphi...иногда
 Аватар для cotseec
1423 / 1278 / 286
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
08.10.2013, 00:24
лечение:
1 два раза кликнуть на таймер, лежащий на форме
2 в инспекторе объектов два раза кликнуть на событие формы OnActivate
3 скомпилировать, запустить

код из приложения
Миниатюры
Не появляется рисунок  
1
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
08.10.2013, 00:27  [ТС]
Круто! Спасибо большое!! Оказывается решение было где то рядом, а я задолбался уже корпеть над этой задачей)
0
angstrom
08.10.2013, 00:38
Дополнительно:
Убрать код FormActivate и добавить

Delphi
1
2
3
4
5
6
procedure TForm1.FormCreate(Sender: TObject);
begin
  DoubleBuffered := True;
  x := 0;
  y := 100;
end;
в таймере

procedure TForm1.Timer1Timer(Sender: TObject);
Delphi
1
2
3
4
5
6
7
8
9
10
11
begin
  Canvas.FillRect(ClientRect);
  Titanik(x, y, clWhite);
  if x < ClientWidth then
    inc(x, 5)
  else
  begin
    x := 0;
    y := Random(50) + 100;
  end;
end;
angstrom
08.10.2013, 00:45
На всякий случай, прилагаю архив.
Вложения
Тип файла: rar slavdon63.rar (1.5 Кб, 3 просмотров)
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
08.10.2013, 01:32
А в чём проблема-то была кроме цвета?
0
angstrom
08.10.2013, 01:41
События не были назначены.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.10.2013, 01:41
Помогаю со студенческими работами здесь

Как создать рисунок и сохранить его в bmp (точечный рисунок)
Здравствуйте, пишу свой графический редактор и вот не знаю как из того что я рисую в графе сконструировать рисунок , а потом сохранить его...

На странице есть рисунок. При наведении мыши на этот рисунок он должен измениться
На странице есть рисунок. При наведении мыши на этот рисунок он должен измениться. Когда Вы отведете мышку в сторону, рисунок должен...

Установите в документе рисунок с кнопкой При нажатии кнопки рисунок должен смениться
Ув. пользователи! Прошу помочь мне с некоторыми задачами по Java Script: 1) Установите в документе рисунок с кнопкой. При нажатии...

Как на фоновый рисунок наложить второй рисунок
Как на рисунок (фон) наложить текст с таблицей? Сама таблица есть не в текстовом формате (в Word), а в виде скриншота, т.е. картинка.

На листе находится рисунок; можно ли сохранить этот рисунок из книги, как отдельный bmp или jpg файл?
1. На листе находится рисунок. Можно ли, сохранить этот рисунок из книги как отделений Bmp или jpg файл. И еще один вопрос: Можно...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru