VBA Excel. Цвет ячейки (заливка, фон). Вывод сообщений о числовых значениях цветов. Цвет в Visual Basic

Заливка ячейки цветом в VBA Excel. Фон ячейки. Свойства.Interior.Color и.Interior.ColorIndex. Цветовая модель RGB. Стандартная палитра из 56 цветов. Предопределенные константы.

Свойство.Interior.Color объекта Range

Начиная с Excel 2007 основным способом заливки диапазона или отдельной ячейки цветом (зарисовки, добавления, изменения фона) является использование свойства.Interior.Color объекта Range путем присваивания ему значения цвета в виде десятичного числа от 0 до 16777215 (всего 16777216 цветов).

Заливка ячейки цветом в VBA Excel

Пример кода 1:

Sub ColorTest1() Range("A1").Interior.Color = 31569 Range("A4:D8").Interior.Color = 4569325 Range("C12:D17").Cells(4).Interior.Color = 568569 Cells(3, 6).Interior.Color = 12659 End Sub

Поместите пример кода в свой программный модуль и нажмите кнопку на панели инструментов «Run Sub» или на клавиатуре «F5», курсор должен быть внутри выполняемой программы. На активном листе Excel ячейки и диапазон, выбранные в коде, окрасятся в соответствующие цвета.

Есть один интересный нюанс: если присвоить свойству .Interior.Color отрицательное значение от -16777215 до -1, то цвет будет соответствовать значению, равному сумме максимального значения палитры (16777215) и присвоенного отрицательного значения. Например, заливка всех трех ячеек после выполнения следующего кода будет одинакова:

Sub ColorTest11() Cells(1, 1).Interior.Color = -12207890 Cells(2, 1).Interior.Color = 16777215 + (-12207890) Cells(3, 1).Interior.Color = 4569325 End Sub

Проверено в Excel 2016.

Вывод сообщений о числовых значениях цветов

Числовые значения цветов запомнить невозможно, поэтому часто возникает вопрос о том, как узнать числовое значение фона ячейки. Следующий код VBA Excel выводит сообщения о числовых значениях присвоенных ранее цветов.

Пример кода 2:

Sub ColorTest2() MsgBox Range("A1").Interior.Color MsgBox Range("A4:D8").Interior.Color MsgBox Range("C12:D17").Cells(4).Interior.Color MsgBox Cells(3, 6).Interior.Color End Sub

Вместо вывода сообщений можно присвоить числовые значения цветов переменным, объявив их как Long.

Использование предопределенных констант

В VBA Excel есть предопределенные константы часто используемых цветов для заливки ячеек:

Присваивается цвет ячейке предопределенной константой в VBA Excel точно так же, как и числовым значением:

Пример кода 3:

Range("A1").Interior.Color = vbGreen

Цветовая модель RGB

Цветовая система RGB представляет собой комбинацию различных по интенсивности основных трех цветов: красного, зеленого и синего. Они могут принимать значения от 0 до 255. Если все значения равны 0 - это черный цвет, если все значения равны 255 - это белый цвет.

Выбрать цвет и узнать его значения RGB можно с помощью палитры Excel:

Чтобы можно было присвоить ячейке или диапазону цвет с помощью значений RGB, их необходимо перевести в десятичное число, обозначающее цвет. Для этого существует функция VBA Excel, которая так и называется - RGB.

Пример кода 4:

Range("A1").Interior.Color = RGB(100, 150, 200)

Свойство.Interior.ColorIndex объекта Range

До появления Excel 2007 существовала только ограниченная палитра для заливки ячеек фоном, состоявшая из 56 цветов, которая сохранилась и в настоящее время. Каждому цвету в этой палитре присвоен индекс от 1 до 56. Присвоить цвет ячейке по индексу или вывести сообщение о нем можно с помощью свойства.Interior.ColorIndex:

Пример кода 5:

Range("A1").Interior.ColorIndex = 8 MsgBox Range("A1").Interior.ColorIndex

Просмотреть ограниченную палитру для заливки ячеек фоном можно, запустив в VBA Excel простейший макрос:

Пример кода 6:

Sub ColorIndex() Dim i As Byte For i = 1 To 56 Cells(i, 1).Interior.ColorIndex = i Next End Sub

Номера строк активного листа от 1 до 56 будут соответствовать индексу цвета, а ячейка в первом столбце будет залита соответствующим индексу фоном.

Готовую стандартную палитру из 56 цветов можете посмотреть .

Раскраска изображений

PAPER, INK, BORDER

Spectrum-Бейсик позволяет раскрашивать экран монитора с использованием восьми цветов: черного, синего, красного, фиолетового, зеленого, голубого, желтого и белого.

Изображение на экране строится из сочетания включенных и выключенных пикселей, причем как одни, так и другие Spectrum-Бейсик позволяет окрашивать в различные цвета. Цвет выключенных пикселей называется цветом фона, включенных — цветом тона . Следовательно, цвет фона — это цвет «пустого» (без изображения) экрана, цвет тона — цвет окраски символов или графических объектов, выводимых на экран.

Задаются цвета фона и тона, соответственно, операторами PAPER (бумага, англ.) и INK (чернила). После каждого из них ставится параметр — код требуемого цвета:

0 - черный,

1 - синий, -

2 - красный,

3 - фиолетовый,

4 - зеленый,

5 - голубой,

6 - желтый,

7 - белый.

Например, после выполнения оператора PAPER 6

знакоместа, в которые осуществляется вывод символов или графики, будут окрашиваться в желтый цвет.

Окрасить же весь основной экран можно, лишь очистив его с помощью оператора CLS. Он, выключая пиксели экрана, окрашивает их в текущий (заданный оператором PAPER) цвет фона. При работе в непосредственном режиме CLS можно заменить повторным нажатием Enter.

После окраски основного экрана становится четко виден бордюр

— поле по краям экрана. Бордюр тоже можно окрасить в один из восьми цветов. Делается это с помощью оператора BORDER. Выполним:

BORDER 6

— и бордюр (так же, как и весь экран) станет желтым. После задания цвета тона, например, оператором

INK 1

все выводимое на экран изображение — символы ли, графика ли

— все будет окрашиваться в синий цвет. Попробуем:

PRINT "ZX Spectrum" CIRCLE 127, 87, 50

На экране синим по желтому будет напечатано ZX Spectrum и начерчена окружность (по желтому в том случае, если до этого выполнялся предыдущий пример).

Цветовые эффекты

BRIGHT, INVERSE, FLASH, OVER

Изображение на экране Speccy может быть не только раскрашено, но и иметь две градации яркости : нормальную и повышенную (оператор BRIGHT). Кроме того, оно может выводиться с инверсией: цвет фона меняется на цвет тона, а цвет тона на цвет фона (INVERSE), или сделано мерцающим: с меняющимися через определенный промежуток времени цветами тона и фона (FLASH). Все перечисленные операторы используются с одним параметром, принимающим значение либо 1 — включение режима, либо 0 — выключение.

Это элементарно, но на пальцах не объяснишь. Лучше выполнить операторы BRIGHT 1, FLASH 1, INVERSE 1 и попробовать выводить на экран текст, задавая различные значения цветов тона и фона.

Обычно, если на экран помещается новое изображение, например, в знакоместо впечатывается символ, прежнее изображение стирается. Но в Spectrum-Бейсике имеется оператор OVER , после выполнения которого компьютер переходит в режим, позволяющий накладывать «новое» изображение на «старое». При этом точки, в которых изображения совпадают, принимают цвет фона. Включение и выключение режима наложения, как и режимов инверсии и мерцания, задаются, соответственно, значениями 1 и О, ставящимися после OVER.

Кроме упомянутых значений, указываемых после ключевых слов PAPER, INK (0...7) и BRIGHT, INVERSE, FLASH (0 и 1), может использоваться число 8, назыьаемое параметром прозрачности. Например, после выполнения последовательности PAPER 8, INK 8, BRIGHT 8, INVERSE 8 и FLASH 8 оператор

PRINT AT 10,10;"*"

впечатает звездочку (*) в 10-й столбец 10-й строки в цветах, ранее установленных для этого знакоместа. Если, скажем, в этом знакоместе размещался мерцающий символ (FLASH 1) синего цвета (INK 1) на желтом фоне (PAPER 6) с повышенной яркостью (BRIGHT 1), то и звездочка будет выведена в этих же цветах.

После PAPER и INK может стоять также параметр 9. INK 9 предоставляет компьютеру самостоятельно выбрать цвет тона, который контрастен цвету фона: черным по светлому фону (зеленому, голубому, желтому и белому) или белым по темному (черному, красному, синему и фиолетовому). Таким же образом действует PAPER 9, устанавливая цвет фона контрастным цвету тона.

Постоянные и временные атрибуты экрана _

Прежде всего поясним значение нового термина, появившегося в заголовке, — атрибуты экрана. Это общее название для цветов фона, тона, режимов яркости и мерцания, устанавливаемых для каждого знакоместа экрана. Задавая цвета и перечисленные режимы, мы говорим, что задаем атрибуты. Теперь поясним, почему они бывают постоянные и временные.

До сих пор мы использовали ключевые слова PAPER, INK, BRIGHT и FLASH как самостоятельные операторы. Их действие распространялось на весь экран и длилось до того момента, пока эти операторы не выполнялись с новыми параметрами. То есть мы работали с постоянными атрибутами экрана.

Однако часто бывает необходимо напечатать каким-либо цветом лишь одно слово или символ, не влияя на окраску последующих, то есть не меняя значения постоянных атрибутов. Сделать это можно, используя ключевые слова, управляющие цветом, в качестве параметров оператора PRINT.

Записываются они так же, как и AT и TAB — в произвольном месте данных, предназначенных для вывода на экран, отделяясь от них точками с запятой. К примеру, после выполнения строки

PRINT "*"; INK 4; "*"; PAPER 5; "♦"

на экране появятся три звездочки. Цвета фона и тона первой из них будет соответствовать ранее определенным постоянным атрибутам (если они не были специально заданы, то звездочка будет напечатана черным по белому, то есть цветами, устанавливаемыми компьютером сразу после включения питания). Вторая звездочка окрасится в зеленый тон, но с тем же фоном. Третья пропечатается зеленым по голубому. Установленные в строке временные атрибуты, в данном случае цвета тона и фона, действуют только до конца PRINT или до появления в строке новых параметров. Если после этого мы вновь зададим PRINT без параметров (PRINT "*"), то убедимся, что временные атрибуты никак не повлияли на постоянные.

Ключевые слова INVERSE и OVER тоже могут использоваться в операторе PRINT, переключая режим инверсии и совмещения лишь на время его работы.

Все графические построения (точки, линии, дуги, окружности) также можно производить не только в постоянных цветах (как до сих пор мы делали), но и во временных. Для этого операторы, задающие атрибуты экрана (INK, PAPER и прочие), ставятся сразу за ключевым словом графического оператора и отделяются от параметров точкой с запятой. Например:

PLOT 32, 80 DRAW 32, 0 DRAW INK 4; 32, 0 DRAW 32, 0

В результате выполнения этих операторов на экране высветятся три отрезка. Крайние будут окрашены в постоянный цвет тона (черный по умолчанию). Средний — в соответствии с временным параметром INK — в зеленый.

Но не все так радужно в королевстве цветной графики ZX Spectrum. Проведем по экрану две диагонали: красную и синюю. Чего проще: PLOT 0, 0

DRAW INK 2; 255, 175 PLOT 255, 0

DRAW INK 1; -255; 175

Посмотрев же на экран, замечаем не очень приятный эффект: в районе точки пересечения первая проведенная диагональ (красная) перекрасилась в синий цвет.

Происходит это из-за того, что атрибуты экрана (цвета фона и тона, яркость и мерцание) в ZX Spectrum устанавливаются не для каждой точки, а целиком для знакоместа — одинаковые атрибуты для каждой из 64 его точек (8x8). И, естественно, если через знакоместо проведена линия с новым цветом тона, то все ранее установленные точки в этом знакоместе перекрасятся. Эта особенность компьютера накладывает ограничения на разнообразие окраски изображения: в пределах одного знакоместа невозможно использовать более двух цветов.

Операторы INVERSE и OVER также можно использовать и в качестве параметров графических операторов. Операторы с INVERSE 1 будут честно ставить точки или прочерчивать линии цветом фона, с OVER 1 на фоне будут рисовать тоном и, наоборот, на тоне фоном. Операторы, в которых одновременно размещены и INVERSE 1, и OVER 1, не будут менять изображение на экране.

Как до сих пор мы придавали цветкакому-нибудь элементу Visual Basic:

· В режиме проектирования мы устанавливали соответствующее свойство в окне свойств. Для этого в закладке Palette выбирали один из нескольких десятков цветов.

· В режиме работы пользовались операторами типа Form1. BackColor = vbRed. Имеется всего 8 цветов, представленных этим способом:

Но в Visual Basic существует 16 миллионов цветов с лишним (точнее - 16777216)! Мы должны научиться ими управлять. Есть несколько способов. Так, цвет можно указывать просто числом от 0 до 16777215. Например,

Form1.BackColor = 12456743

Недостаток этого способа - по числу трудно угадать, что за цвет.

Мне нравится такой способ: Вспомним, что любую краску можно получить, смешав в определенной пропорции красную (R ed), зеленую (G reen) и синюю (B lue) краски. В Visual Basic каждой краски в смесь можно положить от 0 до 255 единиц. Смешивает краски специальная функция RGB (название - по первым буквам цветов). Пусть мы хотим покрасить форму краской, в которую мы положили и смешали 100 единиц красной, 200 единиц зеленой и 50 единиц синей краски. Для этого пишем такой оператор:

Form1.BackColor = RGB(100, 200, 50)

Чем меньше каждой краски мы положим, тем темнее будет цвет, чем больше - тем светлее:

Если каждой краски положить поровну, получится серый цвет:

Результатом работы функции RGB является число, обозначающее цвет. Кстати, для любознательных. Посчитайте-ка, сколько всего цветов можно получить, перебрав все возможные в Visual Basic сочетания красного, зеленого и синего.

Задание цвета в режиме проектирования

Хорошо. В режиме работы мы научились задавать все цвета. А в режиме проектирования? Мы видим, что цвета в окне свойств закодированы строкой из каких-то непонятных значков, например:

Эту строку вы можете вручную изменять, ставя на место одних значков подходящие другие, и таким образом задавать любой из 16 миллионов цветов.

Попробуем разобраться, что означают значки этого кода:

Количество каждой краски закодировано в так называемой шестнадцатиричной системе счисления. К сожалению, я не могу из-за ограниченного объема книги дать вам здесь прочное понятие о системах счисления, попытаюсь только дать способ разобраться в кодировке.

В отличие от привычной нам десятичной системы счисления, где 10 цифр (0, 1, 2, … , 9), в шестнадцатиричной системе 16 цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). Не очень удобно, что старшие цифры обозначены буквами, но другие значки еще неудобнее.

Если человек, привыкший кодировать все числа в 16-й системе, скажет, что он видит 7 предметов, то обычный человек, глядя на них, тоже скажет, что их 7. Если тот скажет, что он видит A предметов, то обычный человек, глядя на них, скажет, что их 10.Если тот скажет, что он видит F предметов, то этот скажет, что их 15.

Когда обычный человек видит наше привычное десятичное число 47, то он говорит, что надо взять 4 раза по десять и еще прибавить 7.

Когда 16-й человек видит 16-е число 29, то он учит обычного человека, что надо взять 2 раза по шестнадцать и еще прибавить 9. Получится 41. Итак, 16-е число 29 означает 10-е число 41.

Когда 16-й человек видит 16-е число AE, то он учит обычного человека, что надо взять A раз (то есть 10 раз) по шестнадцать и еще прибавить Е (то есть 14). Получится 174. Итак, 16-е число AE означает 10-е число 174.

Максимальное двузначное число в 16-й системе - FF. Убедитесь, что оно равно 255 в 10-й системе. Получается, что для задания количества краски в цвете Visual Basic достаточно двузначного 16-го числа. Такая кодировка и применяется на самом деле.

Теперь вы можете сознательно менять 16-е цифры в окне свойств и наблюдать результат.

А сейчас я хочу вам подсказать, как задавать количество красной, синей и зеленой краски в том самом числе, которое от 0 до 16777215. Для знатоков систем счисления достаточно знать, что переведя это число из 10-й системы в 16-ю, вы получите число из шести 16-х цифр, полностью определяющее цвет так, как я это только что описал. Для остальных скажу, что вам достаточно задавать это число таким выражением:

Form1.BackColor = B * 256 * 256 + G * 256 + R

Здесь B, G, R - числовые переменные, имеющие тот же смысл, что и числа в функции RGB. А теперь, знатоки, скажите, не кажется ли вам, что перед вами 256-я система счисления?

5.6.Цвет в Visual Basic

Как до сих пор мы придавали цвет какому-нибудь элементу Visual Basic:

    В режиме проектирования мы устанавливали соответствующее свойство в окне свойств. Для этого в закладке Palette выбирали один из нескольких десятков цветов.

    В режиме работы пользовались операторами типа Form1. BackColor = vbRed. Имеется всего 8 цветов, представленных этим способом:

Фиолетовый (неточный перевод)

Голубой (неточный перевод)

Но в Visual Basic существует 16 миллионов цветов с лишним (точнее - 16777216)! Мы должны научиться ими управлять. Есть несколько способов. Так, цвет можно указывать просто числом от 0 до 16777215. Например,

Form1.BackColor = 12456743

Недостаток этого способа - по числу трудно угадать, что за цвет.

Мне нравится такой способ: Вспомним, что любую краску можно получить, смешав в определенной пропорции красную (R ed), зеленую (G reen) и синюю (B lue) краски. В Visual Basic каждой краски в смесь можно положить от 0 до 255 единиц. Смешивает краски специальная функция RGB (название - по первым буквам цветов). Пусть мы хотим покрасить форму краской, в которую мы положили и смешали 100 единиц красной, 200 единиц зеленой и 50 единиц синей краски. Для этого пишем такой оператор:

Form1.BackColor = RGB(100, 200, 50)

Чем меньше каждой краски мы положим, тем темнее будет цвет, чем больше - тем светлее:

Темный цвет (потому что числа маленькие)

RGB(210, 250, 202)

Светлый цвет (потому что числа большие)

Черный цвет

RGB(255, 255, 255)

Белый цвет

Если каждой краски положить поровну, получится серый цвет:

Результатом работы функции RGB является число, обозначающее цвет. Кстати, для любознательных. Посчитайте-ка, сколько всего цветов можно получить, перебрав все возможные в Visual Basic сочетания красного, зеленого и синего.

Задание цвета в режиме проектирования

Хорошо. В режиме работы мы научились задавать все цвета. А в режиме проектирования? Мы видим, что цвета в окне свойств закодированы строкой из каких-то непонятных значков, например:

Эту строку вы можете вручную изменять, ставя на место одних значков подходящие другие, и таким образом задавать любой из 16 миллионов цветов.

Попробуем разобраться, что означают значки этого кода:

Сколько в цвете синей краски

Сколько в цвете зеленой краски

Сколько в цвете красной краски

Пока не обращайте внимания и не пытайтесь менять

Количество каждой краски закодировано в так называемой шестнадцатиричной системе счисления. К сожалению, я не могу из-за ограниченного объема книги дать вам здесь прочное понятие о системах счисления, попытаюсь только дать способ разобраться в кодировке.

В отличие от привычной нам десятичной системы счисления, где 10 цифр (0, 1, 2, … , 9), в шестнадцатиричной системе 16 цифр (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F). Не очень удобно, что старшие цифры обозначены буквами, но другие значки еще неудобнее.

Если человек, привыкший кодировать все числа в 16-й системе, скажет, что он видит 7 предметов, то обычный человек, глядя на них, тоже скажет, что их 7. Если тот скажет, что он видит A предметов, то обычный человек, глядя на них, скажет, что их 10.Если тот скажет, что он видит F предметов, то этот скажет, что их 15.

Когда обычный человек видит наше привычное десятичное число 47, то он говорит, что надо взять 4 раза по десять и еще прибавить 7.

Когда 16-й человек видит 16-е число 29, то он учит обычного человека, что надо взять 2 раза по шестнадцать и еще прибавить 9. Получится 41. Итак, 16-е число 29 означает 10-е число 41.

Когда 16-й человек видит 16-е число AE, то он учит обычного человека, что надо взять A раз (то есть 10 раз) по шестнадцать и еще прибавить Е (то есть 14). Получится 174. Итак, 16-е число AE означает 10-е число 174.

Максимальное двузначное число в 16-й системе - FF. Убедитесь, что оно равно 255 в 10-й системе. Получается, что для задания количества краски в цвете Visual Basic достаточно двузначного 16-го числа. Такая кодировка и применяется на самом деле.

Теперь вы можете сознательно менять 16-е цифры в окне свойств и наблюдать результат.

А сейчас я хочу вам подсказать, как задавать количество красной, синей и зеленой краски в том самом числе, которое от 0 до 16777215. Для знатоков систем счисления достаточно знать, что переведя это число из 10-й системы в 16-ю, вы получите число из шести 16-х цифр, полностью определяющее цвет так, как я это только что описал. Для остальных скажу, что вам достаточно задавать это число таким выражением:

Form1.BackColor = B * 256 * 256 + G * 256 + R

Здесь B, G, R - числовые переменные, имеющие тот же смысл, что и числа в функции RGB. А теперь, знатоки, скажите, не кажется ли вам, что перед вами 256-я система счисления?

5.7.3 способ - Рисуем при помощи графических методов

Рассмотрим третийй способ использования графики в Visual Basic.

Методами для рисования различных геометрических фигур обладают два объекта: форма и PictureBox. Кстати, те же, что обладают и методом Print, который с полным основанием тоже называют графическим.

Напишем программу, которая рисует на форме точку, прямоугольник, окружность и отрезок прямой в тех местах, где это показано на рисунке:


Вот программа:

Private Sub Command1_Click()

PSet (1000, 2000) "точка

Line (2000, 1000)-(5000, 3000) "отрезок прямой

Line (3000, 3000)-(1000, 4000) , B "прямоугольник

Circle (4000, 2000) , 1000 "окружность

Пояснения : Числа на картинке обозначают горизонтальную и вертикальную координаты на форме (в твипах).

Вы видите, что методы записаны без указания объекта, которому они принадлежат. В этом случае считается, что по умолчанию они принадлежат форме. Если бы вы записали Picture1.Line, то рисование происходило бы на поверхности PictureBox.

Точка рисуется методом PSet . Два числа в скобках - координаты точки на форме, первое число - горизонтальная координата, второе число - вертикальная.

Будем называть величины, указанные в методе, параметрами метода.

Отрезок прямой рисуется методом Line . Мы знаем, что отрезок прямой можно построить, если известно положение двух его крайних точек. Они-то и задаются в обращении к методу. Первая пара параметров - координаты одной точки (любой из двух), вторая пара - другой.

Если дана пара точек, то между ними можно провести не только отрезок прямой, но и прямоугольник . Для этого достаточно в методе Line указать букву B после двух запятых.

Окружность можно построить, если известно положение центра и радиус. Окружность рисуется методом Circle , первые два параметра которого - координаты центра, третий - радиус.

Создайте новый проект и проверьте программу.

Кроме метода Print, в Visual Basic есть следующие графические методы (о тех из них, что нам не знакомы, поговорим чуть позже):

Линия или прямоугольник

Круг, эллипс, дуга, сектор

Очищает поверхность объекта от нарисованного и напечатанного

Это функция, она сообщает цвет любой точки на объекте

Копирует с одного объекта на другой прямоугольный кусок изображения

Настройка внешнего вида рисуемых фигур

Фигуры, изображенные методами вашей программы, нарисованы тонкими черными сплошными линиями без заливки внутренних областей. Это скучно. Вы должны уметь управлять толщиной, цветом и другими атрибутами фигур. Для этого есть три способа, которые вы можете применять по одиночке или вперемешку:

    В режиме проектирования настроить соответствующие свойства объекта. Эти свойства воздействуют сразу на все методы.

    В режиме работы в нужные моменты изменять эти свойства (этот способ бьет предыдущий, то есть в случае конфликта пересиливает его настройки).

    В самом методе можно задавать многие атрибуты рисуемой фигуры (этот способ бьет остальные).

Поговорим об этом подробнее.

Свойства объектов, влияющие на графические методы

Поэкспериментируйте со следующими свойствами (сначала в режиме проектирования, а затем в режиме работы):

Свойство

Толщина линии

Цвет линии

Стиль линии (сплошная, штриховая и т.п.). Предварительно сделайте толщину = 1.

Стиль (узор) заливки и будет ли заливка.

Цвет заливки

Определяет, будут ли автоматически восстанавливаться графика и напечатанный текст, случайно стертые из-за того, что объект скрылся из вида.

Способ наложения краски. По умолчанию = 13 (Copy Pen), когда краска плотно накладывается и предыдущая картинка через нее не просвечивает. При других значениях новая краска меняет свой цвет или сложно взаимодействует со старой и иногда получается любопытный и полезный результат.

PSet (1000, 2000) "точка - тонкая, черная

Circle (4000, 2000), 1000 "окружность - тонкая, черная

DrawWidth = 20 "меняем толщину линий

ForeColor = RGB(230, 250, 100) "меняем цвет линий

PSet (1000, 5000) "точка - толстая, цветная

Circle (4000, 5000), 1000 "окружность - толстая, цветная

З
адание 61:
В режиме работы нарисуйте снеговика и сделайте на нем надпись шрифтом Times:

Снеговик

Ефрем



А теперь рассмотрим подробнее графические методы.

Метод Pset

До этого я использовал методы, указывая минимальное число параметров. Теперь я хочу показать все важные параметры, которые можно указывать в методах.

Параметры метода могут быть выражениями, например:

PSet (x+200 , y) , RGB(5+a, 90, 80) + 100

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

Синтаксис метода PSet:

PSet (x , y ) , цвет

В этой и следующих синтаксических схемах я по возможности воздержусь от квадратных скобок, указывающих на необязательность параметра, иначе схемы будут ими перенасыщены. Также я не буду указывать объект - владелец метода. Также не буду указывать и отложу немного объяснение параметра Step.

Метод Line

Вот объяснение на примерах:

Результат

Отрезок прямой между точкой с координатами (2000, 1000) и точкой с координатами (5000, 3000).

Line (2000, 1000)-(5000, 3000) , vbRed

Отрезок красного цвета

Line (2000, 1000)-(5000, 3000) , vbRed , B

Прямоугольник красного цвета

Line (2000, 1000)-(5000, 3000) , vbRed , BF

Прямоугольник красного цвета, залитый этим же цветом

Line (2000, 1000)-(5000, 3000) , , B

Прямоугольник. Цвет его определяется свойством ForeColor, так как в операторе там, где должен быть указан цвет, стоит пустота

Нет смысла и запрещено писать одну букву F вместо B или BF.

Заливку можно сделать двумя способами:

    Поставив букву F, тогда заливка будет тем же цветом, что и линия.

    Не ставя букву F, тогда заливка определяется свойствами FillStyle и FillColor.

Обратите внимание на две стоящие рядом запятые в последнем примере. Это вполне понятный стиль Visual Basic - если в списке необязательных параметров какой-то параметр пропускается, то запятые нужно указывать все равно, а то будет непонятно, какой по порядку параметр вы указали правее.

Синтаксис метода Line:

Line (x1 , у1 ) - (x2 , y2 ) , цвет , B | BF

Здесь все параметры, включая цвет - числовые выражения.

Вертикальная черта | означает "или". Имеется в виду, что в этом месте оператора вы можете поставить или B или BF .

Метод Circle

Вот объяснение на примерах:

Результат

Circle (4000, 2000) , 1000

Окружность с центром в точке с координатами (4000, 2000) и радиусом 1000

Circle (4000, 2000) , 1000 , vbRed

Красная окружность

Circle (4000, 2000) , 1000 , 1 , 3

Дуга окружности , начинающаяся от угла в 1 радиан 1 и кончающаяся углом в 3 радиана. Угол отмеряется от направления на восток против часовой стрелки

Circle (4000, 2000) , 1000 , -1 , -3

Сектор круга , начинающийся от угла в 1 радиан и кончающийся углом в 3 радиана. Угол отмеряется от направления на восток против часовой стрелки

Circle (4000, 2000) , 1000 , 2

Эллипс (эллипс - это почти овал) с центром в точке с координатами (4000, 2000). Получен из окружности радиусом 1000 горизонтальным сжатием в 2 раза

Circle (4000, 2000) , 1000 , 1/3

Эллипс с центром в точке с координатами (4000, 2000). Получен из окружности радиусом 1000 вертикальным сжатием в 3 раза

Circle (4000, 2000) , 1000 , 1 , 3 , 2

Дуга эллипса

Circle (4000, 2000) , 1000 , -1 , -3 , 2

Сектор эллипса

Синтаксис метода Circle:

Circle (x_центра , y_центра ) , радиус , цвет , начальный_угол , конечный_угол , сжатие

Здесь все параметры, включая цвет - числовые выражения.

CurrentX, CurrentY, Step

В процессе рисования Visual Basic постоянно меняет свойства формы CurrentX , CurrentY , которые равняются координатам последней нарисованной точки. Для метода Line это та из двух точек, координаты которой указаны в правых скобках, а если дело касается метода Circle - то это координаты центра окружности. Для метода PSet все ясно без объяснений. Метод Print тоже меняет эти координаты, устанавливая их в то место, где должен появиться следующий напечатанный символ. Вы можете отслеживать эти свойства при помощи оператора Debug.Print CurrentX, CurrentY.

Теперь поговорим о Step.

Задача : Нарисовать три точки: одну с координатами (500, 1000), а две другие правее и выше. Расстояние соседних точек друг от друга равно 179 твипов по горизонтали и 40 твипов по вертикали.

Фрагмент программы, решающий дело:

PSet (500, 1000)

Здесь нам пришлось вычислять координаты. Есть другой способ, который иногда бывает удобнее:

PSet (500, 1000)

PSet Step (179, -40)

PSet Step (179, -40)

Перед любыми скобками с указанием координат вы имеете право писать слово Step . Тогда числа в этих скобках перестают быть абсолютными координатами, а становятся смещением по горизонтали и вертикали от точки, координаты которой определяются свойствами CurrentX, CurrentY. Положительное смещение по горизонтали - направо, по вертикали - вниз.

Попробуйте без компьютера нарисовать на бумажке, что нарисует такой фрагмент:

Circle (2000, 2000), 1000

Метод Cls

Он просто стирает все нарисованное и напечатанное. Вставьте его в программу и проверьте в пошаговом режиме:

Circle (2000, 2000), 1000

Line Step(900, 0)-Step(-900, -900)

Метод Point

Задача : Вы загрузили в форму фотографию морского пляжа и хотите узнать, какого цвета зонтик вот у этой дамы слева.

Решение : Сначала вам нужно узнать координаты хоть какой-нибудь точки на зонтике. Я думаю, вы сами догадаетесь, как это сделать. (Совершенно верно, здесь вам поможет маленькая окружность, координаты которой вы подбираете так, чтобы попасть в зонтик). Пусть окружность Circle (1000, 9000), 100 оказалась прямо на зонтике. Теперь достаточно выполнить процедуру:

Private Sub Command1_Click()

Debug.Print Point (1000, 9000)

Цвет вы получите в виде числа, например, 12089756. Да-да, это то самое число от 0 до 16777215. Совершенно неудобоваримое. Для того, чтобы определить, сколько в нем красной, синей и зеленой краски, вам придется провести некоторые арифметические подсчеты, идею которых вам должно подсказать выражение из 5.6. Это и будет ваше

задание 62: Определить цвет заданной точки на форме и выдать одно из трех сообщений:

    В этом цвете красной краски больше, чем двух остальных.

    В этом цвете зеленой краски больше, чем двух остальных.

    В этом цвете синей краски больше, чем двух остальных.

Распознав цвет точки на форме, вы сделали первый шаг к решению великой и не решенной до сих пор человечеством задачи распознавания зрительных образов. Пожалуй, вы уже сейчас в силах написать программу, которая в большинстве случаев правильно отличит фотографию песчаной пустыни от фотографии океана. Но знаете ли вы, что не родился еще гений, способный написать программу, надежно отличающую хотя бы фото собаки от фото кошки? Потому что здесь дело не столько в цвете, сколько в форме. А это уже гораздо сложнее.

Решение задачи распознавания образов - ключ к осуществлению величайшей и самой дерзкой мечты ученых - созданию искусственного интеллекта, электронного разума, равного человеческому или превосходящего его.

для начинающих . Шесть техник для путешествия в другие миры... проблему для начинающих , чем для опытных астральных путешественников. Начинающие скоро... Эдайн АСТРАЛЬНАЯ ПРОЕКЦИЯ ДЛЯ НАЧИНАЮЩИХ Шесть техник для путешествия в другие...

  • С для начинающих липпман оглавление

    Решение

    Авторов книги. Структура книги “C++ для начинающих ” содержит обстоятельное введение в... в название книги слова “для начинающих ” потому, что последовательно придерживались... char *pc2 = ""; Для начинающего программиста использование строк встроенного...

  • М униципальный некоммерческий фонд поддержки малого предпринимательства г кемерово «справочно-информационное пособие для начинающих предпринимателей» государственная регистраци я

    Документ

    ПРЕДПРИНИМАТЕЛЬСТВА Г. КЕМЕРОВО «Справочно-информационное пособие для начинающих предпринимателей» г. Кемерово, Островского 27 Тел...). 3. Разработка бизнес-плана: -для начинающих СМСП - 5 000 руб. - для действующих СМСП -15 000 ...

  • Для школьников студентов и начинающих1999С Н Лукин Все права защищены © Глава 0

    Краткое содержание

    Мы не учимся. Она - для начинающих и для для начинающих , так и для Для начинающего

  • Для школьников студентов и начинающих1999С Н Лукин Все права защищены © Глава 0 (1)

    Краткое содержание

    Мы не учимся. Она - для начинающих и для тех более опытных, кто имеет... Бэйсик Basic язык как для начинающих , так и для профессиональных программистов Паскаль Pascal ... применяется также оператор Read. Для начинающего программиста различия в их применении...