Слои изображения в Визуал Бейсик 6

  В своих статьях я много раз сетовал на то, что Визуал Бейсик не позволяет создавать слои изображения, столь удобные для пользователей Фотошопа.
  На самом деле, это не совсем так.
  Элемент PictureBox использует два слоя изображения. Слой закреплённой графики, и слой незакреплённой графики, лежащий поверх первого слоя.
  Когда мы считываем изображение из файла, оно сразу же  оказывается на первом слое.
  Далее мы работаем на втором, верхнем слое. Этот слой прозрачен, графическое примитивы - точки, линии, окружности мы рисуем именно на нём.

  Нажимая кнопку, на которой написано  «cls», мы очищаем верхний слой, а закрепляя графику, компьютер объединяет первый и второй слои, отправляя объединённое изображение на нижний слой и очищая верхний.

     РАБОТА ЛАСТИКОВ

  Методом PaintPicture мы можем считать указанную область с нижнего слоя и нарисовать её на верхнем слое.

  Таким образом в программе DM_Paint устроен «синий» ластик – мы ведём стилусом по рисунку, и у нас создаётся впечатление, что мы прочищаем верхний слой, локально освобождая рисунок от незакреплённой графики. На самом деле мы рисуем на верхнем слое, передавая на него изображение снизу.

  Передавать изображение закреплённой графики на наш рисунок методом PaintPicture можно и из других рисунков, даже если они и не полностью видны. Так работает «розовый» ластик. Он читает изображение с поля2 и переносит его на поле1.
  Поле2 используется в программе как оперативный буфер, рисунок, взятый целиком, мы направляем туда кнопкой «1=>2» (применяем метод Picture2.Picture = Picture1.Image), а возвращаем записанное обратно кнопкой «2=>1» (применяем метод Picture1.Picture = Picture2.Picture).
  Но вот записать что-нибудь на поле2 методом PaintPicture не получится. На левой панели виднеется только маленький кусочек этого поля и методом PaintPicture записать изображение можно только на эту видимую часть.

  Наконец, обычный ластик сиреневого цвета тоже отнюдь не счищает незакреплённую графику. Он просто красит верхний слой нашего рисунка в тот цвет, который установлен как цвет фона.

   ЧТЕНИЕ С ПОЛЕЙ

  В программе DM_Paint имеется два поля типа PictureBox, на которые изображение, находящееся на поле рисования, можно вначале записать, а потом считать. Это поле2 (об этом поле уже говорилось), и поле6 (краешек этого поля тоже виднеется на левой панели). Запись на поле6 и чтение с поля6 производится кликами по зелёной и оранжевой кнопкам < и >. Эти кнопки находятся рядом.
  Также, как и для поля2, графика считанная таким способом с поля6, является закреплённой. То есть, изображение с поля6 попадает на нижний слой, а верхний слой рисунка (поля1) при этом очищается.

  Но изображения с поля2 и с поля6 можно считать и на верхний слой рисунка. Делается это кликами по краешкам этих полей, которые видны на левой панели. Причём, клик правой кнопкой мыши (клик кнопкой стилуса) считает изображение целиком, а клик левой кнопкой мыши (касание стилусом планшета) считает только часть изображения, а именно – ту часть, которая находится в прямоугольнике, предварительно обозначенном на рисунке кликами по диагональным углам.
  Поскольку считанная таким способом графика находится на верхнем слое рисунка, она оказывается незакреплённой, и её тут же можно счистить, кликнув по кнопке «cls».
  На верхней панели имеется ещё одна кнопка с надписью «Cl», и может показаться, что она совершает аналогичное действие, но это не так. Клик по этой кнопке заполняет рисунок цветом фона, то есть окрашивает верхний слой его в этот цвет, и прочистить рисунок можно тут же, кликнув по «cls».

  Поля 2 и 6 вроде бы и одинаковы, но в использовании их есть некая функциональная разница. В частности, если на поле6 было записано изображение (изображение это может быть и чистым фоном, серым, или к примеру белым), то при закреплении на рисунке векторной графики (в режиме её редактирования и Показа), перед её выводом, фон или изображение считывается с поля6. В результате мы получаем незакреплённое изображение векторных фигур находящееся поверх считанного с поля6 и закреплённого на рисунке фона.
  Сначала, внизу – фон, потом, сверху - векторная графика. И это удобно при работе с ней.

  Когда мы запускаем программу DM_Paint, то видим окно с левой и верхней панелями управления и поле рисунка (поле1) на котором можно уже рисовать. Однако поля 2 и 6 у нас ещё пустые, и при попытке чтения с них в верхней информационной строке появится надпись о том, что такое-то поле пусто.
  Поэтому сразу после запуска программы рекомендуется активизировать эти поля. Можно попросту записать на них фон.
  Если мы хотим, чтобы фон этот был белым, то кликаем пару раз правой кнопкой мыши по кнопке «цвет фона» на верхней панели, на этой кнопке появляется белый цвет, затем кликаем «Cl» - белый цвет окрашивает поверхность рисунка. После этого записываем полученное изображение на поля 2 и 1.

  Вот такие разъяснения о работе с полями рисунков в программе, созданной в среде Визуал Бейсик 6. Я надеюсь, что после этих разъяснений, некоторые ваши действия станут более осмысленными.

__________
28.03.2021


Рецензии