■ Наилучшие условия: найдите такой способ выполнения задачи, которые никоим образом не приводят к блокированию действий пользователя. Если ваше мобильное приложение способно вытолкнуть выполнение работы в фоновый поток, предоставляя пользователю возможность продолжить работу с другими задачами и своевременно уведомляя его о завершении первой задачи, то можете считать, что Чаша Грааля интерактивных возможностей приложения — в ваших руках. Действуя подобным образом, вы должны тщательно продумать модель выталкивания выполнения работы в фоновый поток. Вам необходимо решить, каким образом следует информировать пользователя о ходе выполнения работы, сохранив для него возможность управления выполнением фоновой задачи, но при этом не создавать никаких ощутимых неудобств в отношении взаимодействия пользователя с высокоприоритетным потоком пользовательского интерфейса. В качестве примера удачного применения этой стратегии в случае приложений для настольных компьютеров можно привести поддержку в Microsoft Word печати документов в фоновом режиме с одновременным предоставлением пользователю возможности продолжения работы по редактированию активного документа в высокоприоритетном потоке. Это средство очень полезно и кажется простым, но, чтобы все это работало, проектировщикам пришлось хорошенько потрудиться
Листинг 11.5. Вызов метода Update() элемента управления для отображения пояснительного текста, информирующего о ходе выполнения задачи
//--------------------------------------------------------------------
//Этот код принадлежит форме, содержащей по одному элементу управления
//Button (button1) и Label (label1)
//--------------------------------------------------------------------
private void button1_Click(object sender, System.EventArgs e) {
//Отобразить курсор ожидания
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.WaitCursor;
string testString;
for (int loop3 = 0; loop3 < 100; loop3 = loop3 + 10) {
label1.Text = loop3.ToString() + "% выполнено...";
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//Чтобы отобразить информацию о процессе обновления,!
//удалите символы комментария в строке ниже !
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//label1.Update();
testString = "";
for(int loop2 = 0; loop2 < 1000; loop2++) {
testString = testString + "тест";
}
}
label1.Text = "Готово!";
//Удалить курсор ожидания
System.Windows.Forms.Cursor.Current = System.Windows.Forms.Cursors.Default;
}
Выбор подходящих форматов и размеров растровых изображений
С растровыми изображениями приходится иметь дело как при низкоуровневой работе с графикой, так и при высокоуровневом проектировании пользовательского интерфейса. В описаниях большинства каркасов пользовательских интерфейсов упоминается элемент управления PictureBox, способный отображать битовые образы, а низкоуровневые графические библиотеки имеют дело главным образом с операциями на битовом уровне. Растровые изображения используются во многих разновидностях приложений, представляющих значительный интерес; достаточно привести в качестве примера приложения, в которых используются карты городских улиц, изображения медицинского назначения, фотографии объектов недвижимости или изображения игровых полей. В процессе работы с данными растровых изображений важно заботиться как о способах файлового представления изображений, так и об объемах памяти, занимаемых данными изображений. Для хранения и потоковой передачи данных существуют различные файловые форматы, у каждого из которых характеризуется своими достоинствами и недостатками. Независимо от того, файлы какого формата вы используете, в памяти растровые изображения обычно представляются в виде матрицы, соответствующей пиксельным размерам изображения; этот несжатый формат удобен тем, что обеспечивает быстрое использование изображений как графическим оборудованием, так и базовой операционной системой.
Размеры изображения имеют существенное значение
Приступая к работе с растровыми изображениями для мобильных устройств, вы, прежде всего, должны задаться вопросом о том, каковы должны быть физические пиксельные размеры изображений, которые вы намерены переносить на устройства и загружать в память.
Для упрощения расчетов предположим, что мы имеем дело с изображениями в форме квадрата. Тогда 1-мегапиксельному изображению будет соответствовать матрица размером 1000×1000 пикселей. Такое разрешение значительно превышает возможности экранов большинства мобильных устройств, и до недавнего времени было слишком высоким даже для экранов настольных компьютеров (размеры которых обычно составляет 1024×768 = 786432 пикселя). Вместе с тем, даже недорогие современные цифровые камеры позволяют получать фотографии, состоящие из более чем 2-мегапикселей, однако не столь уж большой редкостью являются ныне 4- и 6-мегапиксельные камеры, причем этот пиксельный показатель с каждым годом возрастает.
Читать дальше