
- •Оглавление
- •Об авторе
- •Посвящение
- •Благодарности
- •Ждем ваших отзывов!
- •Что такое .NET
- •Создание исходной программы
- •Тестовая поездка
- •Каркас программы
- •Комментарии
- •Введение в хитрости панели элементов
- •Повторное использование кода из панели элементов
- •Правила объявления переменных
- •Вариации на тему int
- •Объявление переменной с плавающей точкой
- •Ограничения переменных с плавающей точкой
- •Объявление переменных типа decimal
- •Сравнение десятичных и целых чисел, а также чисел с плавающей точкой
- •Логичен ли логический тип
- •Символьные типы
- •Что такое тип-значение
- •Неизменяемость строк
- •Основные операции над строками
- •Сравнение строк
- •Сравнение без учета регистра
- •Отличие строк в разных регистрах
- •Преобразование символов строки в символы верхнего или нижнего регистра
- •Поиск в строках
- •Как искать
- •Пуста ли строка
- •Удаление пробельных символов
- •Анализ числового ввода
- •Обработка последовательности чисел
- •Объединение массива строк в одну строку
- •Арифметика
- •Простейшие операторы
- •Порядок выполнения операторов
- •Оператор инкремента
- •Сравнение чисел с плавающей точкой
- •Составные логические операторы
- •Вычисление типа операции
- •Типы при присваивании
- •Перегрузка операторов
- •Ветвление с использованием if и switch
- •Инструкция if
- •Инструкция else
- •Как избежать else
- •Вложенные инструкции if
- •Конструкция switch
- •Циклы
- •Цикл без счетчика
- •Правила области видимости
- •Пример
- •Зачем нужны разные циклы
- •Зачем нужны массивы
- •Массив фиксированного размера
- •Массив переменного размера
- •Свойство Length
- •Инициализация массивов
- •Понятие <т>
- •Обобщенные коллекции
- •Инстанцирование пустого списка
- •Создание списка целых чисел
- •Преобразования списков в массивы и обратно
- •Подсчет количества элементов в списке
- •Поиск в списках
- •Инициализаторы массивов и коллекций
- •Выполнение специфичных для множеств задач
- •Создание множества
- •Добавление элемента в множество
- •Выполнение объединения
- •Пересечение множеств
- •Получение разности
- •Не используйте старые коллекции
- •Обход каталога файлов
- •Начало программы
- •Получение начальных входных данных
- •Создание списка файлов
- •Форматирование вывода
- •Вывод в шестнадцатеричном формате
- •Обход коллекций: итераторы
- •Доступ к коллекции: общая задача
- •Использование foreach
- •Формат индексатора
- •Блок итератора
- •Создание каркаса блока итератора
- •Итерирование дней в месяцах
- •Что же такое коллекция
- •Синтаксис итератора
- •Блоки итераторов произвольного вида и размера
- •Обобщенные классы безопасны
- •Обобщенные классы эффективны
- •Очередь с приоритетами
- •Распаковка пакета
- •Написание обобщенного кода
- •Использование простого необобщенного класса фабрики
- •Незавершенные дела
- •Ковариантность
- •Использование механизма исключений для сообщения об ошибках
- •Что происходит при генерации исключения
- •Исключительный пример
- •Что делает этот пример "исключительным"
- •Трассировка стека
- •Советы по написанию кода с хорошей обработкой ошибок
- •Анализ возможных исключений метода
- •Как выяснить, какие исключения генерируются теми или иными методами
- •Генерирующие исключения выражения
- •Работа с перечислениями
- •Создание перечислений с инициализаторами
- •Указание типа данных перечисления
- •Применение перечислений в конструкции switch
- •Процедурные поездки
- •Объектно-ориентированные поездки
- •Определение класса и объекта
- •Определение класса
- •Что такое объект
- •Различие между объектами
- •Работа со ссылками
- •Классы, содержащие классы
- •Определение константных членов-данных и членов-данных только для чтения
- •Передача аргументов методу
- •Передача методу нескольких аргументов
- •Соответствие определений аргументов их использованию
- •Перегрузка методов
- •Реализация аргументов по умолчанию
- •Возврат значения оператором return
- •Кортеж с двумя элементами
- •Создание кортежей более чем с двумя элементами
- •Глава 14 Поговорим об этом
- •Определение методов
- •Определение статического метода
- •Определение метода экземпляра
- •Полное имя метода
- •Ключевое слово this
- •Когда this используется явно
- •Что делать при отсутствии this
- •Использование локальных функций
- •Прочие уровни безопасности
- •Методы доступа
- •Пример управления доступом
- •Выводы
- •Статические свойства
- •Побочные действия свойств
- •Дайте компилятору написать свойства для вас
- •Методы и уровни доступа
- •Замена конструктора по умолчанию
- •Конструирование объектов
- •Непосредственная инициализация объекта
- •Конструирование с инициализаторами
- •Инициализация объекта без конструктора
- •Определение свойств с кодом
- •Определение конструкторов и деструкторов с кодом
- •Определение методов доступа к свойствам с кодом
- •Определение методов доступа к событиям с кодом
- •Наследование класса
- •Более сложный пример наследования
- •ЯВЛЯЕТСЯ или СОДЕРЖИТ
- •Доступ к BankAccount через содержание
- •Отношение СОДЕРЖИТ
- •Заменяемость классов
- •Неверное преобразование времени выполнения
- •Указание конкретного конструктора базового класса
- •Обновленный класс BankAccount
- •Перегрузка унаследованного метода
- •Простейший случай перегрузки метода
- •Различные классы, различные методы
- •Сокрытие метода базового класса
- •Вызов методов базового класса
- •Что неверно в стратегии использования объявленного типа
- •Использование is для полиморфного доступа к скрытому методу
- •Объявление метода виртуальным и перекрытие
- •Получение максимальной выгоды от полиморфизма
- •Разложение классов
- •Абстрактный класс: ничего, кроме идеи
- •Как использовать абстрактные классы
- •Создание абстрактных объектов невозможно
- •Опечатывание класса
- •Реализация интерфейса
- •Именование интерфейсов
- •Наследование и реализация интерфейса
- •Преимущества интерфейсов
- •Тип, возвращаемый методом
- •Что скрыто за интерфейсом
- •Гибкие зависимости через интерфейсы
- •Реализация отношения СОДЕРЖИТ с помощью интерфейсов
- •Определение делегата
- •Пример передачи кода
- •Делегирование задания
- •Очень простой первый пример
- •Более реальный пример
- •Создание приложения
- •Жизненный цикл делегата
- •Анонимные методы
- •Проектный шаблон Observer
- •Что такое событие. Публикация и подписка
- •Как издатель оповещает о своих событиях
- •Как подписаться на событие
- •Как опубликовать событие
- •Как наблюдатели "обрабатывают" событие
- •Сборки
- •Выполнимые файлы
- •Библиотеки классов
- •Создание проекта библиотеки классов
- •Создание автономной библиотеки классов
- •Создание классов для библиотеки
- •Использование тестового приложения
- •Дополнительные ключевые слова для управления доступом
- •protected: поделимся с подклассами
- •protected internal: более изощренная защита
- •Размещение классов в пространствах имен
- •Объявление пространств имен
- •Пространства имен и доступ
- •Использование полностью квалифицированных имен
- •Ссылочные типы
- •Выходные параметры
- •Альтернативные методы возврата значений
- •Работа с переменными out
- •Возврат значений по ссылке
- •Различия типов-значений
- •Когда следует использовать структуры
- •Добавление распространенных элементов структур
- •Управление отдельной записью
- •Добавление структур в массивы
- •Перекрытие методов
- •Определение того, что следует защищать
- •Документирование компонентов программы
- •Разложение компонентов на функции
- •Оценка рисков
- •Аутентификация с использованием входа в Windows
- •Безопасность развертывания
- •Уязвимости сценариев
- •Наилучшие методы защиты приложений Web Forms
- •Получение данных
- •Настройка образца схемы базы данных
- •Подключение к источнику данных
- •Работа с визуальными инструментами
- •Написание кода для работы с данными
- •Использование Entity Framework
- •Где водится рыба: файловые потоки
- •Потоки
- •Читатели и писатели
- •Пример использования потока
- •Как это работает
- •Наконец-то мы пишем!
- •Использование конструкции using
- •Загрузка файла из Интернета
- •Регистрация сетевой активности
- •Графика
- •Перья
- •Кисти
- •Текст
- •Классы рисования и каркас .NET
- •Приступая к работе
- •Настройка проекта
- •Обработка счета
- •Создание подключения к событию
- •Рисование доски
- •Запуск новой игры

Классы рисования и каркас .NET
|
f\41'1!)Р'1#.)Р.! |
|
|
|
.(,1". |
|
|
f!т1:1n |
u |
|
Д '1#....#"Р |
|
|
,'1!D")) '1.) !.#..- |
.# |
,.# |
|||||||||
TР#9#_ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
, |
#EСоздание объекта System . Drawing . Graphics. |
|
|
|
ис |
||||||||||||||||||||
пма им |
е |
н |
е |
ни |
е |
инст ум |
е |
нт |
п |
ро |
ст |
ра |
нст |
ва |
им |
е |
н |
System. Drawing дnя р |
|||||||
|
Пр |
|
|
р |
|
ов |
|
|
|
|
|
ова |
|||||||||||||
|
ния на нем. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
iВо тийеВля ысолВпн деконr а квоВит а елВоtбесепа |
нир лолВоаВе ыокбйее |
|||||||||||||||||||||||
та а озyетВи емк2eгуoеiВа |
|
озyетВп ыокбйитВля е олтоетон аолб.елВебт. |
ас |
||||||||||||||||||||||
аоозсийетаа а ао гэ sлS'. |
|
"Sr=.е |
|
|
|
|
|
|
|
|
|
аоозсийетаяТ силлно, |
|||||||||||||
|
-ВозпыокбйаВоозеетВ евк2Ойуoаолб.елВебт.еро |
||||||||||||||||||||||||
ВсаВеозyетВ я; Нск2едзеетВ я; яск2 a |
кВооВкайтва атлВсбнетfДтоВоспа ыо, |
||||||||||||||||||||||||
оеокяеВеин лоодиВоозеетВ алыокообялб.е лВебт. |
аа миак аоозсий етаяедт |
||||||||||||||||||||||||
лоодиеВmикаВсбeолтоеиттбт |
|
ти силВсоеон аоозсийетаа .тиысанесы ао миаки |
|||||||||||||||||||||||
'ПrvАВeтоВосоебйе тисодаВля ти еинен йелВ.н |
|
далте; iВо бдозтпа |
атлВсбе |
||||||||||||||||||||||
нетfeолозетто дкя еезпаоозсийет аае |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
? |
Lc |
L |
|
l |
|
?L) l |
? |
|
L с . уc p 8 |
Lwl8 |
|
о' бLwlя |
wы Кд |
|
|
|
|||||||||
u |
L c |
|
l z |
ul Lc |
|
"r |
|
|
LwlХ еc |
|
|
|
l |
|
|
?eL б |
|
|
|
|
;еыесо озyетВ сh,к Ргяяг ыседлВиекяеВлозоа озyетВ Ваыиемк2ОйуoеплоВи а нас ати тоВосороолтоеитп ти аоозсийет аа е с,яй яск2цвокее Вороrолтоеи аоозсийетая с, ,кrгяяг евркядаВ Войто Вит йеe тит аоозсий етаеТти тнВосое ллпкиеВля озyетв сhяйяск2е
-ВозпсалоеиВотеиолседлВееттоти кВон аоозсийет ааТтит елка зп кВозпк
ыблВоасоклВТнойто алыокоооеиВоыесояrталВа а нсамВп |
е ткилле емк2Ойуoц |
гойтоe тиысанесe алыокоооеиВонсаРВ дкя сионе.етая |
ВетлВити аоозсийее |
та а ыеседерооВозсийетаен ти еезхлВситареТ Витйе алыокоооеиWо дсбраеккее нетВп емк2Огуoдкя аонететая мосниВи аоозсийетая ютикеВбдt
Cсброа лыолозыокбйетая озyетВиевк2Ойуoa аоггsлS'. "Sr=.м Cкя кВоро
тбйет неВод #,oяг с емгпП,go2 3,мсo 0, пям,r е0мгкягемк2ОйуorтоВоспа диеВ |
|
тоебт ыикаВсбТолтоеиттбт |
ти ыоеесстолВа салоеитая ккенетВи бысиекетаяТ |
ти тоВоспа от ллпкиеВляевлка кВомосниr от тилкедбеВеплоВб а насатб мосе |
|
нп а анееВ рееВеемотиехп |
нойеВе алыокоооеиВоыесоя а талВацйВозп салое |
еиВоисяно ти Роснев |
|
бонтаВеr |
йВо дийе линия лкойтия Всеснестия рсимати ч кВо mсолВосил, |
тсинеттпе |
нтороброкотатаr а еп нойеВе лоодиеиВоас л ыоно.от ткилли |
#hoягс; щмкgгпее
ГЛАВА 27 Создание изображений 583

Использование п |
ространства |
|
|
|
|
|
|
|
|
|||||||||||||||||
имен |
Systeщ . ):>raw ng |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
'1!10(,1 |
|
|
'1'1#)-,)- 01'1,_ |
0 |
! |
'1!. |
|
0. |
'1#),'1!),'1#'1"'1'1,0 |
|
0 |
|
-),-",)- |
,#'1,!. |
|||||||||||
'1#- 01'1# |
,'10.."_. |
|
: |
. f\41'1"_),#)0(,1Е |
.,! |
), |
) !,,-)," |
0 |
0!,0 |
," |
'1"(,1'1!1! |
9!01'1#,. |
||||||||||||||
) |
'1"" |
)#) |
"),. |
|
,#'1,,_ |
'1" 0)#,#", |
|
_!),0 |
_,- |
,'10.."_.# |
|
|
|
|
|
|
|
|
||||||||
|
е! |
") ,0 |
- )#) |
"),. |
'1!-,.-,П |
|
|
|
|
№ |
Мт |
ы0 ,'1!),'1#'1),)!Г |
|
|
0(,1"'1 |
оt:ti1:1т |
||||||||||
|
u aДН ,! .# |
'1"),!,.,! |
|
.#)!) |
|
), |
|
(,1!."," |
)!._#,. |
,'10,!."'10"_ |
|
,!,!'1!" |
.- |
_", |
||||||||||||
'1#.!,#,. |
|
|
) |
,#."),)" |
|
'1"!. |
0!_ 0(,1!. |
_!),0З |
f\41'10(,1"'1е,'10)"_"'1'1,. |
|
|
) ),"_-.O00 |
||||||||||||||
'1#._",#0_ |
|
'1" -),-",)- |
|
_!),#,!.'1! |
|
|
|
,!,'1,(,1 |
|
_,- T,!1! ,!,'1".!)#,!). |
|
., ,-_# |
||||||||||||||
.!,.E" |
|
,! |
_#oП '1! |
),,..#", |
|
) |
)".- |
_!),#,!.'1!" |
,!, |
0."),)! |
,!_# |
|
П.,!., |
|
'1#.#,. |
|||||||||||
'1#.!,- |
_ 0 |
_!),#,!.'1! |
|
|
S-'1,п 0!'1#,"'1_ |
|
.,!., |
9!.)!,0,. |
|
)#(,1 |
01'1#,. |
) |
01'1-_ |
|
||||||||||||
Приступая к работе |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
ж.... |
,s. |
|
|
|
9." .-.."..-. |
|
...-т . |
.".".". |
.-... |
.- ...-. |
...".". |
.,.,... |
|
||||||||||||
...-.... |
|
|
. |
"... |
|
. .......-,. |
|
.,.... |
|
...".l |
.-..-.5.. |
|
|
оГ ".."л |
"s..,. |
|||||||||||
"..". .,s,... |
|
. ."."7.. |
|
.., |
|
.-... |
". |
|
s"...т |
.".".-. ."..".. |
|
|
.. |
s... |
..... |
|||||||||||
"..,..... |
|
|
s3. |
.". |
|
5.".l |
".... |
" |
|
." |
|
дГ "..,..... |
|
..".s- ... |
"........ |
|
|
|
ыд |
|||||||
"..,..... |
|
|
. s.- .."."s- |
|
." .. |
.Сe |
|
... ..-. s"..- |
s.. |
.....,s.- |
|
.".-.-.- .- |
||||||||||||||
...e |
Г |
eо |
"... |
|
s.. |
.....,s.- |
|
...-.. |
|
.- |
... ....,. |
|
,... |
.-. |
...,.,.."l |
|
||||||||||
.".,..., |
|
|
.-.. |
|
|
Жр . |
|
ьЖй .- .,. ..,,... |
|
.-3,.,. |
2" |
... |
|
.. |
одд s".".l |
|||||||||||
". |
..".... |
|
|
|
s" |
.-... |
..... |
s... |
|
..С |
л |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
п |
9.". |
|
....,., |
|
|
.. .".s-s.., |
|
.."..-.,.., |
. |
."."." |
2".. |
|
s.. |
...3 |
".,В |
||||||||||
... |
|
.".".", |
|
.,s,. |
|
..,. |
. |
..., |
|
.....,s.l |
|
." |
.. |
., |
.. s,. |
.-..-.3... |
|
nг |
,7, |
|||||||
. |
...-.. |
. |
.-... |
|
..,.." |
.-.e |
"..- . |
.-...-.... |
-,.". |
|
....".,. |
|
|
.. |
..,,. |
." |
||||||||||
|
д...". |
.- .-.s". .. |
..,. |
.-. ..... |
|
|
|
..-.s-...-. |
s"..- |
s3. |
s... |
|
...".".т |
|||||||||||||
...-.7.. |
|
s" оГд "..".l |
.".-.-..-. |
.- .. |
.л Г |
лГ Д,..-. |
.-s-.- |
.-... |
".-.. |
|||||||||||||||||
...".", |
|
."3,l |
-.-.,. ...".-.. |
|
."3.5.. |
2" |
.,., |
...,.,... |
|
|
"..". |
...".".l |
||||||||||||||
.."s ..щ. |
|
. .,...".., |
|
|
."..e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
n... |
|
.-.3..-,... |
. |
..,s..7,. |
|
|
|
...".. |
...-.. |
|
....... |
|
|
. |
.."s.. |
.."." |
|||||||||
.., |
.,.....-.. |
|
. .,...".., |
|
|
.".. |
."s |
.."... |
..,.-.. |
|
..e... |
л |
Г |
|
ГСлД".3, |
|||||||||||
.."s- .. |
"."... |
|
..,. |
..s". . |
..,.,. |
|
|
...".- |
".."...,...к |
|
-."..5,. |
|
.,.,., |
|
||||||||||||
7-,... .- s"..,e |
О |
..,s..7.. |
|
|
.-. |
... |
|
.."s, |
s-.... |
|
..."... |
|
|
|
."..5,. |
2,.,В |
||||||||||
.,7-,... |
|
..,., |
sl .-s... |
|
."..5,. |
|
.,.,.,7-,... |
|
.- ,." .,.." |
|
|
|
."..,.-.,.. |
|||||||||||||
.....,s.- |
|
|
..3 |
.-.-."..".т . |
|
.-s... |
|
|
."3.5,. |
s,.-,. |
"..-. |
.,.,, |
|
.,."..... |
|
|
ьгй
Пс е
р р |
- |
. |
. |
. |
- |
ИИ г Жг е рир . |
|
|
|
с Ф Р Ф Р |
|
||
ЧАСТЬ 3 |
, 6Со6кр Со6сусао6женая не вп |
|

Рис. 27. 1. Традиционная доска для криббеджа
Cribbage |
1 'l 1 |
Рис. 27.2. Цифровая доска для криббеджа
Настройка проекта
с.1 |
)(B(.( |
L!2.(.(- |
(Wd!617 |
.!6#dm)!L.3i |
i )(L.d((6(#- |
(Fd!617 |
.! |
|||||||||
L.1 м.!.(2())17 |
|
)( |
d(L ir |
ir)#е d(L11 |
L(-1 .!L.1 |
.!26# |
6i 12)(#.#м .(. |
|||||||||
)(d(L!6(.3 |
## L .!-!t37 |
|
!ФЗ#..!6 пэКsS |
Мe |
юТСhrt!F.( |
|
6i |
Ф1.#.# |
F!.!6i |
|||||||
)(B(.3 |
L!2.(6(.3 |
Ф(2)#L |
.d(6(.(k |
!.)! |
.d!Fd(--i |
.!.6)! |
6iш.1.#.3 |
.(.т |
.(. |
|||||||
.!.(2()! |
)( |
d(L |
r |
isi .d(6. 17t(# |
g.#-#).i !.)( С.#d#B(L.1#- |
#L.#6( |
||||||||||
)(.d(6!un )(2i6(7.L1 |
|
eгэSМ |
imaoПКС |
e |
S гeэkSМгС |
S |
s |
imaю SККuneТhrS |
||||||||
С e |
SпгseжМs |
e SС |
ю |
e |
Sг гeэSМ |
imasКюС |
e S ( |
|
|
SeМэ |
С |
S |
s ima |
ГЛАВА 27 Создание изображений 585

. кл
Рис. 27.З. Основное окно программы
Обработка счета
cекoэoиио oнооо е: o:oиодoаэор оиоиарlzоиoокадоэедоаэеlкo lерzакедlеlоракуп4l_оzоп.mрерлорепиoлокоииеlпоьиoыиадокloьииол zиеlоеlнодzариlоениэедoиаоепиедеа реВеeокепoпмреlеавадкекедз
ь
=
= |
И |
= " " ;
=
|
= |
Н |
" |
" |
="!О;= ; |