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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2014, 21:25   #1
shadezx
Пользователь
 
Регистрация: 24.10.2013
Сообщений: 75
По умолчанию Графика делфи

Добрый вечер!Нужно сделать что бы при нажатие левой кнопки мыши рисовалась линия(как карандаш в Paint)только можно было выбрать тип линии, и ее Width. Кто может, набросайте пару примеров, хотя бы процедуры и MouseDown
shadezx вне форума Ответить с цитированием
Старый 20.02.2014, 21:40   #2
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,899
По умолчанию

Изучите стандартную демку дельфи
Путь_к_дельфи\Demos\Doc\Graphex\
Её можно и скачать в сети
phomm вне форума Ответить с цитированием
Старый 20.02.2014, 21:51   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Такой набросочек подходит?:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ColorBox;

type

  { TForm1 }

  TForm1 = class(TForm)
    ColorBox1: TColorBox;
    ComboBox1: TComboBox;
    procedure ColorBox1Change(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
 for i:=1 to 100 do ComboBox1.Items.Append(IntToStr(i));
 ComboBox1.Style:=csDropDownList;
 Tag:=0;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Canvas.Pen.Width:=ComboBox1.ItemIndex+1;
end;

procedure TForm1.ColorBox1Change(Sender: TObject);
begin
  Canvas.Pen.Color:=ColorBox1.Color;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Tag:=1;
  Canvas.MoveTo(x,y);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if tag<>0 then
  Canvas.LineTo(x,y);
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  tag:=0;
end;

end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.02.2014, 00:06   #4
shadezx
Пользователь
 
Регистрация: 24.10.2013
Сообщений: 75
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Такой набросочек подходит?:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ColorBox;

type

  { TForm1 }

  TForm1 = class(TForm)
    ColorBox1: TColorBox;
    ComboBox1: TComboBox;
    procedure ColorBox1Change(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
 for i:=1 to 100 do ComboBox1.Items.Append(IntToStr(i));
 ComboBox1.Style:=csDropDownList;
 Tag:=0;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  Canvas.Pen.Width:=ComboBox1.ItemIndex+1;
end;

procedure TForm1.ColorBox1Change(Sender: TObject);
begin
  Canvas.Pen.Color:=ColorBox1.Color;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Tag:=1;
  Canvas.MoveTo(x,y);
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if tag<>0 then
  Canvas.LineTo(x,y);
end;

procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  tag:=0;
end;

end.
да все работает, благодарю) но вот только черный цвет работает а остальные нет.
shadezx вне форума Ответить с цитированием
Старый 22.02.2014, 22:11   #5
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Цитата:
но вот только черный цвет работает а остальные нет.
А в delphi нет других цветов для мышки, вот такой вот недостаток имеет делфи.
Шучу,есть другие цвета. Просто кто-то ColorBox на форму кинул, а событие не выставил.
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 22.02.2014 в 22:16.
Rin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Делфи графика shadezx Помощь студентам 3 08.02.2014 12:38
Графика Делфи DomoOrc Фриланс 2 05.05.2013 13:56
Графика в Делфи Verax1 Помощь студентам 2 15.04.2012 16:33
Графика в делфи Natasha190989 Общие вопросы Delphi 0 15.05.2011 16:09
Графика в Делфи R_A_M_I_L7777777 Помощь студентам 14 27.03.2009 15:21