Исходники Delphi

Добро пожаловать на наш портал

На нашем сайте ежедневно публикуются десятки качественных и свежих материалов, которые Вы можете скачать абсолютно бесплатно. Рекомендуем Вам добавить Наш сайт в закладки, а также подписаться на RSS ленту, чтобы не пропускать интересных новостей.
Стартовая Избранное Главная Контакты Карта сайта

Меню

Не доступно

Не доступно

Опрос

Оцените мой сайт

Проголосовало: 118
Другие опросы

Главная » 2013 » Февраль » 17 » Простой графический редактор )
16:13
Простой графический редактор )
Простой графический редактор ) 

 
Данное приложение, позволит пользователю рисовать на холсте, выбирая ширину и цвет линии, и сохранять результаты своей работы в файле как точечный рисунок. Рисовать мы будем не на всей поверхности окна (Form1.Canvas), а на холсте специально отведенного для размещения рисунка компонента Image(Image1.Canvas). 
Компоненты: 
3 x Button 
ColorDialog 
SavePictureDialog 
Image 
Label 
UpDown 

События компонентов: 
Form1:OnCreate 
Image1:OnMouseDown, OnMouseMove 
UpDown1: OnClick 
Button1, Button2, Button3:OnClick 

Код:
Код

procedure TForm1.FormCreate(Sender: TObject); 
begin 
Caption:= 'Простейший графический редактор'; 
UpDown1.Position :=1; 
Label1.Caption := 'Толщина линии: 1'; 
Button1.Caption := '&Цвет'; 
Button2.Caption := '&Стереть'; 
Button3.Caption := '&Сохранить...'; 
Image1.Canvas.Brush.Color :=clWhite; 
Image1.Cursor := crCross; 
UpDown1.Min := 1; 
UpDown1.Max := 20; 
SavePictureDialog1.DefaultExt := 'bmp'; 
end; 

Рисование происходит следующим образом: при нажатии левой кнопки мыши (событие OnMouseDown) точка, над которой была нажата кнопка, фиксируется, то есть назначаеться текущим положением пера (метод Canvas.MoveTo). После этого любое перемещение мыши (событие OnMouseMove) проводит линию от текущего положения пера до нового положения указателя мыши, и текущей позицией становится эта новая точка (метод Canvas.LineTo). Так происходит до тех пор, пока левая кнопка мыши остается нажатой. 

Код:
Код

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, 
Y: Integer); 
begin 
Image1.Canvas.MoveTo(X, Y); 
end; 
Код

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; 
Shift: TShiftState; X, Y: Integer); 
begin 
if (ssLeft in Shift) then 
Image1.Canvas.LineTo(X, Y); 
end; 

Компонент UpDown служит для выбора ширины пера. Выбранную ширину мы отображаем в надписи Label1: 

Код:
Код

procedure TForm1.UpDown1Click(Sender: TObject; Button: TUDBtnType); 
begin 
Image1.Canvas.Pen.Width := UpDown1.Position; 
Label1.Caption := 'Толщина линии:' + IntToStr(UpDown1.Position); 
end;


Если пользователь закрывает диалог ColorDialog нажатием кнопки ОК, то скопируем значение свойства Color объектаColorDialog1 в одноименной свойство пера: 

Код:
Код

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

Чтобы стереть рисунок, закрасим весь холст цветом фона, то есть белым: 

Код:
Код

procedure TForm1.Button2Click(Sender: TObject); 
begin 
Image1.Canvas.Brush.Color := clWhite; 
Image1.Canvas.FillRect(Rect (0, 0, Image1.Width, Image1.Height)); 
end; 

Чтобы сохранить рисунок в файл, мы сначала копируем содержимое компонента Image во вспомогательный обьект типа "точечный рисунок", а потом вызываем метод этого обьекта SaveToFile. Имя файла мы получаем как значение свойства FileName диалога SavePictureDialog1, если пользователь закрыл этот диалог нажатием кнопки ОК. 
Мы могли бы вызвать и непосредственно метод SaveToFile обьекта Image1.Picture, тем более что на случай каких либо неприятностей при попытке записи мы поместили фрагмент кода, отвечающий за запись файла, в защищенный блок. 

Код:
Код

procedure TForm1.Button3Click(Sender: TObject); 
var 
Pattern: TBitmap; 
Region: TRect; 
begin 
if SavePictureDialog1.Execute then begin 
Pattern := TBitmap.Create; 
try 
Pattern.Width := Image1.Width; 
Pattern.Height := Image1.Height; 
Region := Rect(0, 0, Pattern.Width, Pattern.Height); 
Pattern.Canvas.CopyRect(Region, Image1.Canvas, Region); 
Pattern.SaveToFile(SavePictureDialog1.FileName); 
finally 
Pattern.Free; 
end; 
end; 

end;
Категория: Графика, оформление | Просмотров: 2836 | Добавил: Reif | Рейтинг: 0.0/0
Всего комментариев: 0


Название блока

Здесь html код

Название блока

Здесь html код

Название блока

Здесь html код

Название блока

Здесь html код

 
Исходники Delphi
Сделать бесплатный сайт с uCoz |