Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
slavdon63
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
1

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

07.10.2013, 23:12. Просмотров 875. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2013, 23:12
Ответы с готовыми решениями:

Увеличить рисунок
unit Unit1; interface uses Windows, Messages, SysUtils, Variants,...

рисунок в delphi
нужно сделать рисунок в delphi как на рисунке

Рисунок простейший
Помогите пожалуйста с модулем...

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

Нарисуйте следующий рисунок:ноутбук
Нарисуйте следующий рисунок:ноутбук

21
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
07.10.2013, 23:24 2
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
slavdon63
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
07.10.2013, 23:29  [ТС] 3
Цитата Сообщение от angstrom Посмотреть сообщение
то должен делать этот набор команд?
Этот набор команд рисует прямые линии, из которых должен получится кораблик. Или я что то не догоняю?
0
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
07.10.2013, 23:41 4
А где первоначальный MoveTo? Откуда начинается рисование?
0
northener
пофигист широкого профиля
3423 / 2323 / 630
Регистрация: 15.07.2013
Сообщений: 13,742
07.10.2013, 23:45 5
Цитата Сообщение от slavdon63 Посмотреть сообщение
Titanik(x,y,form1.color);
Красивая цветовая гамма получается. Таким цветом надо было не кораблик рисовать, а того самого суслика
0
slavdon63
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
07.10.2013, 23:48  [ТС] 6
pen.Color:=color;
Вставил сюда, но все равно не рисуется, или опять неправильно?
LineTo(x,y-2*dy);
0
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
07.10.2013, 23:52 7
Цитата Сообщение от angstrom Посмотреть сообщение
А где первоначальный MoveTo?
Команда MoveTo выставляет точку откуда начнётся рисование. Сейчас эта точка не определена.
0
northener
пофигист широкого профиля
3423 / 2323 / 630
Регистрация: 15.07.2013
Сообщений: 13,742
07.10.2013, 23:54 8
Цитата Сообщение от slavdon63 Посмотреть сообщение
pen.Color:=color;
Карандашом синего цвета рисуем на синей бумаге?
0
slavdon63
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
07.10.2013, 23:59  [ТС] 9
Переписал немного процедуру, но все равно экран синий и ничего не происходит
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
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
08.10.2013, 00:07 10
А то что написал northener не учёл?
0
slavdon63
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
08.10.2013, 00:13  [ТС] 11
Вроде учел, что с цветом я напутал, но когда пишу так, все равно не работает...
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
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
08.10.2013, 00:15 12
Кинь проект в архиве, нет желания копировать с экрана.
0
cotseec
Пишу на Delphi...иногда
1407 / 1267 / 284
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
08.10.2013, 00:19 13
таймер включен?
код из заглавного поста, вот картинка
0
Миниатюры
Не появляется рисунок  
slavdon63
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
08.10.2013, 00:20  [ТС] 14
Во вложении. Спасибо!
0
Вложения
Тип файла: rar korablik.rar (203.5 Кб, 5 просмотров)
cotseec
Пишу на Delphi...иногда
1407 / 1267 / 284
Регистрация: 03.12.2012
Сообщений: 3,914
Записей в блоге: 5
Завершенные тесты: 3
08.10.2013, 00:24 15
лечение:
1 два раза кликнуть на таймер, лежащий на форме
2 в инспекторе объектов два раза кликнуть на событие формы OnActivate
3 скомпилировать, запустить

код из приложения
1
Миниатюры
Не появляется рисунок  
slavdon63
0 / 0 / 0
Регистрация: 29.09.2013
Сообщений: 17
08.10.2013, 00:27  [ТС] 16
Круто! Спасибо большое!! Оказывается решение было где то рядом, а я задолбался уже корпеть над этой задачей)
0
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
08.10.2013, 00:38 17
Дополнительно:
Убрать код 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;
1
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
08.10.2013, 00:45 18
На всякий случай, прилагаю архив.
1
Вложения
Тип файла: rar slavdon63.rar (1.5 Кб, 3 просмотров)
northener
пофигист широкого профиля
3423 / 2323 / 630
Регистрация: 15.07.2013
Сообщений: 13,742
08.10.2013, 01:32 19
А в чём проблема-то была кроме цвета?
0
angstrom
2470 / 1846 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
08.10.2013, 01:41 20
События не были назначены.
0
08.10.2013, 01:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.10.2013, 01:41

загрузить рисунок используя св-во Canvas объекта form
добрый вечер,первый и последний раз признаю, что я блондинка,но я реально не...

как правильно вставить рисунок bitmap в канву?
как правильно вставить рисунок bitmap в канву? когда вставляю у меня...

Форма не появляется!
В некоторых проектах которые я делал, или же запускал исходные коды - просто не...


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

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

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