Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TPaintBox, помогите, пожалуйста, чем можете с графи 
:(
    Опции темы
w3
Дата 21.12.2003, 11:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Совсем замучился с графикой. Уже неделю делаю, а толком ничего не получается. Помогите, пожалуйста, сделать. Есть три задачи:

Задача 1: Нарисовать сетку: a, b - размеры сетки(длина и ширина соответственно); k - число горизонтальных линий, m - число вертикальных линий. a, b, k, m вводятся при помощи SpinEdit'a. При изменении значений картинка перерисовывается.

Задача 2: Нарисовать счеты с желтыми и черными костяшками. Число костяшек вводится при помощи SpinEdit'a. При изменении значений картинка перерисовывается.

Задача 3: Анимация. Аналогична Задаче 2, но количество костяшек уже вводить не нужно. Костяшки появляются случайно.

Заданее благодарен за ответы.
  Вверх
<Spawn>
Дата 21.12.2003, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Вот тебе первая, только без TSpinEdit, т.к. у их нет в Дельфи 7(за место них я юзал TLabeledEdit). LabeledEdit1KeyPress и LabeledEdit1KeyUp расставь во все LabeledEdit - ы.

Код
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   PaintBox1: TPaintBox;
   LabeledEdit1: TLabeledEdit;
   LabeledEdit2: TLabeledEdit;
   LabeledEdit3: TLabeledEdit;
   LabeledEdit4: TLabeledEdit;
   procedure PaintBox1Paint(Sender: TObject);
   procedure LabeledEdit1KeyPress(Sender: TObject; var Key: Char);
   procedure LabeledEdit1KeyUp(Sender: TObject; var Key: Word;
     Shift: TShiftState);
 private
     Fa, Fb, Fk, Fm: Cardinal;
 protected
   function IsCorrectGridParams: Boolean;
   function IsRowColInit: Boolean;
   procedure DrawGridRect;
   procedure DrawGrid;
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.DrawGridRect;
begin
 if IsCorrectGridParams then
 begin
   Fa:= StrToInt(LabeledEdit1.Text);
   Fb:= StrToInt(LabeledEdit2.Text);
   PaintBox1.Canvas.Rectangle(0, 0, Fa, Fb);
 end;
end;

function TForm1.IsCorrectGridParams: Boolean;
begin
 Result:= False;
 if (Length(LabeledEdit1.Text) > 0) and
    (Length(LabeledEdit2.Text) > 0) then
   Result:= (StrToInt(LabeledEdit1.Text) <> 0) and
            (StrToInt(LabeledEdit2.Text) <> 0);
end;

procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
 DrawGridRect;
 DrawGrid;
end;

procedure TForm1.LabeledEdit1KeyPress(Sender: TObject; var Key: Char);
begin
 if not (Key in ['0'..'9', Chr(VK_BACK), Chr(VK_LEFT), Chr(VK_RIGHT)]) then
 begin
   Key:= #0;
   Exit;
 end;
end;

procedure TForm1.LabeledEdit1KeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 PaintBox1.Repaint;
end;

procedure TForm1.DrawGrid;
var
 i, Row, Col: integer;
begin
 if IsRowColInit then
 begin
   Fk:= StrToInt(LabeledEdit3.Text);
   Fm:= StrToInt(LabeledEdit4.Text);
   Row:= Fb div (Fk + 1);
   for i:= 1 to Fk do
   begin
     PaintBox1.Canvas.MoveTo(0, i * Row);
     PaintBox1.Canvas.LineTo(Fa, i * Row);
   end;

   Col:= Fa div (Fm + 1);
   for i:= 1 to Fm do
   begin
     PaintBox1.Canvas.MoveTo(i * Col, 0);
     PaintBox1.Canvas.LineTo(i * Col, Fb);
   end;
 end;
end;

function TForm1.IsRowColInit: Boolean;
begin
 Result:= (Length(LabeledEdit3.Text) > 0) and
          (Length(LabeledEdit4.Text) > 0);
end;

end.


Это сообщение отредактировал(а) <Spawn> - 21.12.2003, 15:42


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
w3
Дата 21.12.2003, 15:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата
Вот тебе первая, только без TSpinEdit, т.к. у их нет в Дельфи 7(за место них я юзал TLabeledEdit). LabeledEdit1KeyPress и LabeledEdit1KeyUp расставь во все LabeledEdit - ы.

Большое спасибо. SpinEdit в Delphi 7 есть, он на вкладке Samples
  Вверх
<Spawn>
Дата 21.12.2003, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 2
Всего: 64



Цитата(w3 @ 21.12.2003, 07:06)
Цитата
Вот тебе первая, только без TSpinEdit, т.к. у их нет в Дельфи 7(за место них я юзал TLabeledEdit). LabeledEdit1KeyPress и LabeledEdit1KeyUp расставь во все LabeledEdit - ы.

Большое спасибо. SpinEdit в Delphi 7 есть, он на вкладке Samples

У меня нету))


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • По вопросам разработки игр стоит заглянуть сюда

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Girder, Snowy.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.