Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Работа с графикой


Автор: Mew 4.11.2004, 12:35
У меня есть рисунок, на котором изображается, нотный ряд. КАк сделать так чтобы пользователь сам добавлял нотки, и что по их расположение запоминалось. Чтобы он добавлял их именно на то место которое он хочет

Автор: Zero 4.11.2004, 18:50
Я конечно незнаю, что именно ты подразумевал под словом нотки, но могу тебе предложить способ динамического создания объектов, в качестве которого ты можешь использовать ноты
(пример на кнопках, TSpeedButton)
Код

...
Uses ...,stdctrls, buttons;
...
type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure ButtonClick(Sender: Tobject);  //Эту процедуру ты должен написать с учётом того что на форме нет соответствующего ей объекта, она отвечает за нажатие кнопок
   procedure Button1Click(Sender: TObject);
   procedure FormShow(Sender: TObject);
...
Var
  i:integer;  //Координата по оси Х
...

Procedure TForm1.ButtonClick(Sender: TObject);
begin
 ShowMessage((Sender as Tbutton).Caption); //Выдастся имя той кнопки на которую нажал
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with Tbutton.Create(self) do
   begin
     Parent:=self;
     Onclick:=ButtonClick;
     Caption:='Кнопка-'+inttostr(i);
     left:=i;  //начальное положение кнопки
     i:=i+100;
   end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 i:=10;
end;
...


При этом на форме находится кнопка TButton,при нажатии которой создаётся новая кнопка, но ты можеш запихноть это в любую др. прцедуру, и сделать за место кнопок любой др. объект (ноты)

Автор: <Spawn> 5.11.2004, 12:16
MewМожно сделать так:
1)разбиваешь нотный ряд на прямоугольные боки(их не нужно отображать, просто ты должен знать положение каждой возможной ноты)
2)после чего анализируешь клик юзера по имаджу и функцией PtInRect проверяешь принадлежность текущего положения мыхи к какой либо ячейке
3)если все условия удовлетворительны, то рисуешь ноту(на пример при помощи BitBlt, в случае если она у тебя уже нарисована и лежит во внешнем графическом файле).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)