3 : Brush.Color := clBlue;
4 : Brush.Color := clFuchsia;
5 : Brush.Color := clGreen;
6 : Brush.Color := clLime;
7 : Brush.Color := clMaroon;
8 : Brush.Color := clRed;
9 : Brush.Color := clYellow;
10 : Brush.Color := clWhite;
end;
Rectangle((i - 1) * HW, 0, i * HW, Height);
end;
{рисование креста - только для тестирования}
with Image3 do begin
Canvas.MoveTo(0,0);
Canvas.LineTo(Width, Height);
Canvas.MoveTo(0, Height);
Canvas.LineTo(Width, 0);
end;
BitMap.Assign(Image3.Picture);//нарисованное сохраняется в BitMap
end;
5) В обработчик события OnDestroy (уничтожение) компонета Form1 запишите код, который освобождает память, выделенную под BitMap:
BitMap.Free;
6) Для пункта меню Файл-Открыть в обработчике укажите код, который загружает Image3 изображением из выбранного файла и сохраняет его копию в BitMap
if OpenPictureDialog1.Execute then begin
Image3.Picture.LoadFromFile(
OpenPictureDialog1.FileName);
BitMap.Assign(Image3.Picture);
end;
7) Для пункта меню Правка-Отменить в обработчике укажите код, который заменяет изображение на холсте Inage3 на предыдущую версию картинки из BitMap
Image3.Picture.Assign(BitMap);
8) В обработчике события OnClick компонента SBBrush укажите код, который будет сохранять изображение из Image3 в BitMap, если кнопка нажата (т.е. при смене режима изображение сохраняется в BitMap):
if (Sender as TSpeedButton).Down then
BitMap.Assign(Image3.Picture);
9) В качестве обработчика события OnClick компонента SBColor укажите тот же обработчик, что и для SBBrush
10) В обработчике события OnMouseDown (нажатие кнопки мыши) компонента Image3 укажите следующий код
procedure TForm1.Image3MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (Sender = Image4) or SBColor.Down then
begin //если щелчок по палитре цветов Image4
//или если кнопка указателя цвета нажата
if (Button = mbLeft) then // левая кнопка мыши
with Image1.Canvas do //работаем с
// индикатором
//основного цвета
//Image1
begin
Brush.Color := //установка основного
//цвета
(Sender as TImage).Canvas.Pixels[X, Y];
FillRect(Rect(0, 0, Width, Height));
end
else //если нажата правая кнопка мыши
with Image2.Canvas do //работаем с холстом
//Image2
begin
Brush.Color := //установка
//вспомогательного цвета
(Sender as TImage).Canvas.Pixels[X, Y];
FillRect(Rect(0, 0, Width, Height));
end;
end
else //если щелчок по Image3
if SBBrush.Down then //если нажата кнопка Кисть
with Image3.Canvas do //работаем с основной
//картинкой Image3
begin
if Button = mbLeft
then //если нажата левая кнопка мыши
Brush.Color :=
Image1.Canvas.Brush.Color
else //если нажата правая кнопка мыши
Brush.Color :=
Image2.Canvas.Brush.Color;
FloodFill(X, Y, Pixels[X, Y], fsSurface);
end;
end;
11) Этот же обработчик укажите в качестве обработчика события OnMouseDown компонента Image4. Данный код осуществляет как установку основного и вспомогательного цветов, так и функции инструмента Кисть. Если кнопка мыши нажата на палитре цветов Image4 или если кнопка указателя цвета SBColor утоплена, то приложение находится в режиме установки цветов. При нажатии левой кнопки мыши цвет пиксела под курсором мыши предается в окно основного цвета, а при нажатии правой - вспомогательного. Если кнопка мыши нажата на холсте Image4 и при этом кнопка SBBrush утоплена, то приложение находится в режиме закраски указанной области рисунка. В этом случае в зависимости от нажатой кнопки мыши выбирается основной или вспомогательный цвет и функцией FloodFill производится закраска области, координаты внутренней области которой указаны курсором мыши, а цвет области - цветом пиксела, на который указывает мышь.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.