|
Программирование >> Программирование с использованием ajax
do { bytesRead = clientStream.Read(responseBuffer, 0, bufferSize); memStream.Write(responseBuffer, 0, bytesRead); } while (bytesRead > 0); Изображение считывается так же, как и данные файла. Поток памяти, содержащий данные изображения, преобразуется в изображение классом Bitmaplmage WPF. Затем изображение присваивается свойству Source объекта PictureBox, чтобы оно отображалось в форме: Bitmaplmage bitmaplmage = new Bitmaplmage(); memStream.Seek(о, SeekOrigin.Begin); bitmaplmage.Beginlnit(); bitmaplmage.StreamSource = memStream; bitmaplmage.Endlnit() ; pictureBox.Source = bitmaplmage; Резюме В настоящей главе мы рассмотрели использование классов пространства имен System.Net и System.Net. Sockets для создания сетевых прможений. Класс WebClient можно использовать для доступа к Web-серверам. Простой созданный нами FTP-клиент иллюстрирует применение классов FtpWebRequest и FtpWebResponse, которые предоставляют больше возможностей, чем класс WebClient. Было также показано, что кроме класса FtpWebRequest можно использовать классы HttpWebRequest и FileWebRequest. Поскольку создание сервера с помощью классов FtpWebRequest и FtpWebResponse невозможно, для этого требуются классы из пространства имен System.Net. Sockets. Вы научились создавать ТСР-сервер с помощью класса TcpListener и клиентское приложение с помощью класса TcpClient. В этой главе рассмотрены следующие вопросы. □ Использование класса Dns для поиска имен. □ Какие данные клиент отправляет в HTTP-запросе. □ Как выполнять HTTP-запросы с помощью класса WebClient. □ Как работать с классом WebRequest и, в частности, как получать файлы с FTP-сервера с помощью класса FtpWebRequest. □ Как применять пользовательский протокол совместно с классами пространства имен System.Net. Sockets. Упражнения Расширьте возможности приложения FTP-клиента, использующего классы FtpWebRequest и FtpWebResponse, чтобы оно не только загружало файлы с FTP-сервера, но и позволяло выгружать файлы на сервер. Добавьте на форму еще одну кнопку, в качестве свойства Text которой установлен текст Upload File (Выгрузить файл), используйте диалоговое окно OpenFileDialog, чтобы запросить пользователя о выгружаемом файле, а затем отправьте запрос серверу. Для выгрузки файлов класс WebRequestMethods предоставляет член Ftp. UploadFile. Измените приложения PictureServer и PictureClient, использующие классы TcpListener и TcpClient, чтобы можно было выгружать файлы изображений с клиента на сервер. Введение в GDI+ Ранее термин GDI+ был кратко представлен при рассмотрении печати в среде .NET Framework. Эта глава служит введением в программирование с помощью классов GDI+ (Graphics Device Interface - интерфейс графических устройств) - т.е. технологии рисования .NET Framework. Картографические приложения, игры, системы автоматизированного проектирования/автоматизированного производства (CAD/CAM), программы рисования, программы составления диаграмм и многие другие типы приложений требуют от разработчиков вставки кода обработки графики в приложения Windows Forms. Создание нестандартных элементов управления также требу1т использования кода обработки графики. Эта новейшая библиотека классов Microsoft сделала создание кода обработки графики проще, чем когда-либо ранее. Написание кода обработки графики - одна из наиболее увлекательных задач программирования. Изменение кода и немедленное наблюдение результатов этого изменения в видимой форме - чрезвычайно благодарное занятие. Создаете ли вы нестандартное графическое окно, представляющее какую-то информацию приложения новым способом, или создаете нестандартный элемент управления, который делает приложение более стильным и расширяет возможности его применения - в любом случае приложение будет благожелательно встречено широкой публикой. В начале в этой главе рассмотрены методики рисования с помощью GDI+, проиллюстрированные на примере создания нескольких простых графических программ. Затем мы в общих чертах рассмотрим некоторые более сложные возможности GDI+ вроде отсечения. После краткого ознакомления с каждой из этих тем мы рассмотрим классы, которые можно использовать для реализации функциональных возможностей. Знание того, что может быть выполнено, и понимание иерархии используемых при этом классов - уже половина успеха. В этой главе будут рассматриваться следующие темы. а Поверхности рисования, инкапсулированные в классе Graphics. □ Цвета, определенные структурой Color. □ Рисование линий и форм. □ Рисование текста и изображений. □ Рисование в изображениях (двойная буферизация). Обзор графического рисования Первое, что следует запомнить относительно кода обработки графики - то, что система Windows не помнит, как выглядит открытое окно, если оно заслонено другими окнами. Когда заслоненное окно становится видимым, Windows по существу говорит приложению: Ваше окно (или какая-то его часть) становится видимым. Пожалуйста, нарисуйте его . Программист должен позаботиться только о прорисовке содержимого своего окна. Windows сама заботится о границе окна, строке заголовка и всех остальных особенностях окна. При создании окна для рисования, как правило, объявляют класс, производный от System. Windows. Forms. Form. При создании нестандартного элемента управления объявляют класс, производный от System. Windows. Forms.UserControl. В любом случае это ведет к переопределению виртуальной функции OnPaint (). Система Windows вызывает эту функцию каждый раз, когда требуется выполнить повторную прорисовку любой части окна. При наступлении этого события класс PaintEventArgs передается в качестве аргумента. PaintEventArgs содержит два важных элемента информации: объект Graphics и ClipRectangle. Класс Graphics мы рассмотрим первым, а отсечение будет рассмотрено в конце главы. Класс Graphics Класс Graphics инкапсулирует поверхность рисования GDI+. Существуют три основных типа поверхностей рисования: □ окна и элементы управления на экране; □ страницы, отправляемые на принтер; □ битовые карты и изображения в памяти. Класс Graphics предоставляет функции для рисования на любой из этих поверхностей рисования. В числе прочих возможностей его можно использовать для рисования дуг, кривых, кривых Безье, эллипсов, изображений, линий, прямоугольников и текста. Объект Graphics для окна можно получить двумя различными способами. Первый - переопределение метода OnPaint (). Класс Form наследует метод OnPaint () из класса Control, и этот метод является обработчиком события Paint, которое генерируется при каждом перерисовывании элемента управления. Объект Graphics можно получить из класса PaintEventArgs, который передается событием: protected override void OnPaint(PaintEventArgs e) { Graphics g = e.Graphics; Выполнить здесь рисование. В других случаях может требоваться выполнение рисования непосредственно в окне, не дожидаясь генерации события Paint. Такая ситуация может возникать при создании кода для выбора графического объекта в окне (подобно выбору пиктограмм в окне проводника Windows) или перетаскивании объекта мышью. Объект Graphics можно получить, вызывая в форме метод CreateGraphics (), который является еще одним методом, унаследованным Form от класса Control:
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |