и
1. Створимо новий додаток і збережемо його у своїй папці. p align="justify">. Розмістимо на формі 4 компоненти Button і задамо їм відповідні назви. Далі розмістимо на формі компонент ScrollBox (вкладка Additional). Виділивши цей компонент, розмістимо на ньому компонент Image. У властивості Align цього компонента виберемо alClient
В
Розмістимо на формі також два невізуальних компонента - OpenPictureDialog і SavePictureDialog. У цих компонентах властивість Filter вже містить фільтри для деяких типів графічних файлів. Всі ці фільтри, крім фільтра для bmp-файлів, треба видалити. У властивості DefaultExt обох компонентів введемо bmp. p align="justify">. Створимо ще одну форму і розмістимо на ній компоненти Button, Label і SpinEdit наступним чином:
В
Для компонентів SpinEdit здадім наступні характеристики:
SpinEdit1: MinValue = 10, MaxValue = 800, Increment = 10: MinValue = 10, MaxValue = 600, Increment = 10
Перший з них буде визначати ширину нового зображення в пікселях, другий - висоту.
Для кнопок визначимо такі характеристики:
Button1: ModalResult = mrOK, Default = True.: ModalResult = mrCancel, Cancel = True.
4. Повернемося до першої формі. Створимо обробник OnClick для кнопки New: form2 do// встановлюємо значення лічильників на другий формі рівними поточними значеннями ширини і висоти компонента Image
begin.Value: = image1.Width;. Value: = image1.Height;; form2.ShowModal = mrOK then// якщо на 2-й формі натиснута кнопка ОК
with image1 do: = nil;// очищення колишнього зображення і створення нового з потрібними розмірами
canvas.FillRect (canvas.ClipRect);// заливка створеного зображення кольором фону
savepicturedialog1.FileName: ='';. Caption: = 'Image editor';
end;
. Створимо обробник OnClick для кнопки Open:
with openpicturedialog1 doexecute then.Picture.LoadFromFile (filename);. FileName: = filename;. Caption: = 'Image Editor -' + Filename;// до заголовку вікна додається назва файлу
filename: ='';;
. Аналогічним чином створюємо обробник для кнопки Save:
with savepicturedialog1 doexecute thenimage1.Picture.SaveToFile (filename);. Caption: = 'Image Editor -' + filename;
end;
. Для копки Clear створимо наступний обробник:
with image1.Canvas do (cliprect);
8. Створимо обробник події OnCreate для форми:
image1.Parent.DoubleBuffered: = true; image1 do.Bitmap.Width: = scrollbox1.Width;. Bitmap.Height: = scrollbox1.Height;. FillRect (canvas.ClipRect);; p>
Якщо перший рядок наведеного вище коду буде відсутній, при малюванні на компоненті Image зображення буде мерехтіти. Решта рядки потрібні, щоб при запуску програми в редакторі присутнє зображення. p align="justify">. Наступним кроком буде реалізація можливості малювання лінії чорного кольору товщиною 1 піксель. Малювання буде можливим як на створених, так і на завантажених зображеннях. p align="justify"> Для Image1 в обробнику OnMouseDown напишемо:. Canvas.MoveTo (x, y);// точка з координатами X, Y стає поточною точкою канви.
Оброблювач OnMouseMove Image1: ssleft in shift then// якщо натиснута ліва клавіша мишки
image1.Canvas.LineTo (x, y);// малюється лінія від поточної точки до точки з координатами X, Y і ця точка стає наступною поточної
. Приступимо до наступного етапу. Додамо редактору наступні функції: можливість малювання прямих ліній, зміни товщини контуру, а також можливість вибору кольору фону та контуру. Розмістимо на формі додаткові компоненти: (Capture = Mode ), всередині якого розміщено дві кнопки:
SpeedButton1 (Capture = Brush , GroupIndex = 1, Down = True) - кнопка для малювання в режимі В«free hand В»(Capture = Ruler GroupIndex = 1, Tag = 1) - кнопка для малювання в режиміВ« прямої лінії В» span>
ColorGrid1 (властивість GridOrdering = go16x1 - комірки розташовані в один ряд)
SpiEdit1 (MaxValue = 22, MinValue = 1, Value = 1, Increment = 3).
Label1 (Capture = Width )
У властивості Tag буде зберігається номер режиму малювання.
В