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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.05.2009, 18:38   #1
wayder
Новичок
Джуниор
 
Регистрация: 27.05.2009
Сообщений: 3
По умолчанию Delphi Canvas карандаш

Как можно с помощью Canvas сделать, так что бы, когда нажимаешь левую кнопку мышки и тянешь ее по форме рисуется линия соответственно координатам мышки в данный момент, вообщем нужно сделать что-то на подобии карандаша.

на данный момент у меня есть прожка, которая рисует круг или прямоугольник если держать кнопку Shift.

Может у кого-то есть исходник Paint написанного на Delphi

Код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 if Button = mbLeft then
begin
Center.X := X;
Center.Y := Y;
if ssShift in Shift then
Circle := False
else
Circle := True;
end;
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
 Radius.X := abs(Center.X-X);
Radius.Y := abs (center.Y-Y);
if Circle then
Canvas.Ellipse(Center.X-Radius.X, Center.Y-Radius.Y, Center.X+Radius.X, Center.Y+Radius.Y)
else
Canvas.Rectangle(Center.X-Radius.X, Center.Y-Radius.Y, Center.X+Radius.X, Center.Y+Radius.Y);
if CheckBox1.Checked=True  then
begin
 Radius.X:=abs(Center.X -X);
Radius.Y:=abs(Center.Y-Y);
  Invalidate;
end;
end;

procedure TForm1.PeinColor1Click(Sender: TObject);
begin
if ColorDialog1.Execute then begin
  Canvas.Pen.Color:=GetGValue(ColorDialog1.Color);
end;
end;

procedure TForm1.BrushColor1Click(Sender: TObject);
begin
if ColorDialog1.Execute then begin
  Canvas.Brush.Color:=GetGValue(ColorDialog1.Color);
end;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
if CheckBox1.Checked=True  then
 begin
if Circle then
Canvas.Ellipse(Center.X-Radius.X, Center.Y-Radius.Y, Center.X+Radius.X, Center.Y+Radius.Y)
else
Canvas.Rectangle(Center.X-Radius.X, Center.Y-Radius.Y, Center.X+Radius.X, Center.Y+Radius.Y);
end;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
Caption:=Format ('Координаты: x=%d, y=%d ' , [X, Y]);
end;

procedure TForm1.Clier1Click(Sender: TObject);
begin
Canvas.Brush.Color := clBtnFace;
Canvas.FillRect(Canvas.ClipRect);
end;

procedure TForm1.FormColor1Click(Sender: TObject);
begin
if ColorDialog1.Execute then
begin
  Form1.Color:=GetGValue(ColorDialog1.Color);
end;  
end.
wayder вне форума Ответить с цитированием
Старый 27.05.2009, 22:14   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вот, зайдите на страницу
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 28.05.2009, 15:42   #3
wayder
Новичок
Джуниор
 
Регистрация: 27.05.2009
Сообщений: 3
По умолчанию

Спасибо большое!
wayder вне форума Ответить с цитированием
Старый 28.05.2009, 16:57   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

У вас на компьютере, можно сказать - под носом:
...Borland\Delphi7\Demos\Doc\Graphe x
mihali4 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
delphi canvas Neymexa Помощь студентам 5 06.01.2010 21:35
Нарисовать карандаш Настенька..Блонди Общие вопросы Delphi 6 21.05.2009 11:28
Canvas Jai Общие вопросы Delphi 7 15.05.2009 13:11
Подключение Canvas Zeraim Общие вопросы Delphi 4 13.05.2008 20:51
Canvas Zven Общие вопросы Delphi 9 06.12.2007 10:40