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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2013, 19:16   #1
студенточка!
Пользователь
 
Регистрация: 18.10.2010
Сообщений: 22
По умолчанию Распылитель в Delphi

Здравствуйте,подскажите пожалуйста как реализовать распылитель (как инструмент "Распылитель" в Paint)допустим на форме есть кнопка при нажатии на которую курсор превратился в распылитель и функционирует как он.
студенточка! вне форума Ответить с цитированием
Старый 17.04.2013, 20:07   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

А Вы попытайтесь описать словами, как именно он функционирует.
Собственно, с этого начинается реализация любой идеи - описать эту идею словами.
s-andriano вне форума Ответить с цитированием
Старый 17.04.2013, 20:12   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Простейший распылитель:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    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);
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  x0, y0: Integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled := false;
  Timer1.Interval := 10;
end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  x0 := X;
  y0 := Y;
  Timer1.Enabled := true;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  x0 := X;
  y0 := Y;
end;

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

procedure TForm1.Timer1Timer(Sender: TObject);
const
  d = 30;
begin
  canvas.Pixels[x0 + random(d + 1) - d div 2, y0 + random(d + 1) - d div 2] := clred;
end;

end.
UPD
Пожалуйста

Гуще точки и быстрее ставятся:
Код:
procedure TForm1.Timer1Timer(Sender: TObject);
const
  d = 10;
  n = 10;
var
  i: Integer;
begin
  for i := 1 to n do
    canvas.Pixels[x0 + random(d + 1) - d div 2, y0 + random(d + 1) - d div 2] := clred;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 18.04.2013 в 01:30.
BDA вне форума Ответить с цитированием
Старый 17.04.2013, 20:38   #4
студенточка!
Пользователь
 
Регистрация: 18.10.2010
Сообщений: 22
По умолчанию

Спасибо большое за пример)
студенточка! вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создание модуля Delphi для поворота растровых изображений.delphi Romka62 Помощь студентам 1 18.11.2012 15:22
Не изменяется интерфейс моей программы при переходе с Delphi 7 на Delphi 2010 Elvisnya Общие вопросы Delphi 3 28.04.2011 15:59
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? redred Общие вопросы Delphi 10 11.12.2007 10:43
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? dagarik БД в Delphi 7 22.10.2007 17:54