Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2010, 15:56   #1
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию Работа с объектом Image

Добрый день! Необходима помощь!
Имеется следующее задание:

PHP код:
Изобразить катушечный магнитофон
Показать перемотку ленты с катушки на катушку и обратно 
С помощью объекта Image изобразила магнитофон. Код:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
WITH Image1.Canvas DO
BEGIN
Brush.Color:=clMedGray;
Pen.Color:=clMaroon;
Pen.Style:=psSolid;
Pen.Width:=4;
Font.Size:=20;
Font.Style:= [fsItalic, fsBold];
Brush.Style:=bsClear;
Font.Color:=clBlue;
TextOut (430, 300, 'Магнитофон');
FillRect(Image1.ClientRect);
MoveTo(Image1.Width DIV 3 - 40,Image1.Height DIV 3 + 65);
LineTo(Image1.Width DIV 2 ,Image1.Height DIV 3 - 65);

Brush.Color:=clSilver;
Ellipse(Image1.Width DIV 4 + 65, Image1.Height DIV 3 - 65,
        Image1.Width DIV 4 - 65, Image1.Height DIV 3 + 65);
Ellipse(Image1.Width DIV 2 + 65, Image1.Height DIV 3 - 65,
        Image1.Width DIV 2 - 65, Image1.Height DIV 3 + 65);





end;
end;

end.
Теперь я должна изобразить одновременное увеличение одного круга и уменьшение другого. Но как это сделать не могу понять(((
Помогите, пожалуйста! Скажите, что нужно написать?
Я самый порочный ангел и самый безгрешный демон...

Последний раз редактировалось Stilet; 09.03.2010 в 08:47.
Lisёноk вне форума Ответить с цитированием
Старый 08.03.2010, 17:40   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

предлагаю такой вариант...
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
var t: trect;
    l: integer;
begin
 t.Top:= 0; t.Left:= 0;
 t.Right:= image1.Width;
 t.Bottom:= image1.Height;
 l:= image1.Width - image1.Height;

 if (p) then begin
  k:= k-1; if k<1 then k:= 15;
 end else begin
  k:= k+1; if k>15 then k:= 1;
 end;

 with image1.Canvas do begin
  Pen.Color:= clMaroon;
  brush.color:= clwhite;
  fillrect(t);

  Pen.Width:= 1;
  i:= k; ii:= 15-k;
  while i >0 do begin
   Ellipse(image1.Height div 4- i*2 +20,image1.Height div 4- i*2 +20, 3*image1.Height div 4+ i*2 -20, 3*image1.Height div 4+ i*2 -20);
   i:= i-1
  end;

  while ii >0 do begin
   Ellipse(l+image1.Height div 4- (ii)*2 +20,image1.Height div 4- (ii)*2 +20, l+3*image1.Height div 4+ (ii)*2 -20, 3*image1.Height div 4+ (ii)*2 -20);
   ii:= ii-1
  end;

  moveto(image1.Height div 2,image1.Height div 4 +20 - k*2);
  lineto(l+ image1.Height div 2,image1.Height div 4 +20 - (15-k)*2);

  Pen.Width:= 2;
  Ellipse(image1.Height div 4+20,image1.Height div 4+20, 3*image1.Height div 4-20, 3*image1.Height div 4-20);
  Ellipse(l+image1.Height div 4+20,image1.Height div 4+20, l+3*image1.Height div 4-20, 3*image1.Height div 4-20);

 end
end;
Изображения
Тип файла: jpg магнитофон.jpg (17.4 Кб, 91 просмотров)
Вложения
Тип файла: zip _магнитофон.zip (1.8 Кб, 15 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 13.03.2010, 12:41   #3
Lisёноk
Пользователь
 
Регистрация: 08.03.2010
Сообщений: 75
По умолчанию

Спасибо за помощь! Но увы работу не приняли((((
Сказали сделать попроще: через простенькую процедуру и цикл.
Я попыталась кое что набросать, но получается какой то бред.
Код:
Код:
procedure TForm1.Button1Click(Sender: TObject);


procedure Ellipse1 (x,y: integer);
var r,i: integer ;
begin
r:=0;
for i:=45 to 65 do
begin
R:=r+i;
image1.Canvas.Ellipse(Image1.Width DIV 4 + r,Image1.Height DIV 3 - r,
                      Image1.Width DIV 4 - r, Image1.Height DIV 3 + r);
Application.ProcessMessages;
end;
end;


begin
WITH Image1.Canvas DO
BEGIN
Brush.Color:=clMedGray;
Pen.Color:=clMaroon;
Pen.Style:=psSolid;
Pen.Width:=4;
Font.Size:=20;
Font.Style:= [fsItalic, fsBold];
Brush.Style:=bsClear;
Font.Color:=clBlue;
TextOut (430, 300, 'Магнитофон');
FillRect(Image1.ClientRect);
MoveTo(Image1.Width DIV 3 - 40,Image1.Height DIV 3 + 40);
LineTo(Image1.Width DIV 2 ,Image1.Height DIV 3 - 40);
//Brush.Color:=clSilver;

//Ellipse(Image1.Width DIV 4 + 45, Image1.Height DIV 3 - 45,
       //Image1.Width DIV 4 - 45, Image1.Height DIV 3 + 45);
//Ellipse(Image1.Width DIV 2 + 65, Image1.Height DIV 3 - 65,
        //Image1.Width DIV 2 - 65, Image1.Height DIV 3 + 65);
Ellipse1 (x,y);
end;
end;









end.
Вот...
И что теперь делать? Какой нужен цикл? А то я что-то совсем запуталась.
Я самый порочный ангел и самый безгрешный демон...
Lisёноk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с компонентом Image. DarkStyle Помощь студентам 1 06.03.2010 22:29
работа с image messi013 Общие вопросы Delphi 4 14.01.2010 16:14
работа с image Lokos Компоненты Delphi 6 28.12.2009 18:05
Работа с объектом ADODB.Stream voam Microsoft Office Excel 4 15.12.2009 23:31
работа с Объектом {TabSheet} Rebel123 Общие вопросы Delphi 7 09.09.2009 15:52