вторник, 25 декабря 2012 г.
понедельник, 24 декабря 2012 г.
WPF: Timer's
Еще один сюрприз: оказывается в WPF метод обработчик Elapsed класса Timer из пространства имен System.Timers не может получить доступ к объектам формы, например при попытке считать свойство Tag, у объекта формы Image, бросается эксепшен, как я понял это связано с тем, что обработчик Elapsed выполняется в другом потоке, для которого прямой доступ запрещен, и возможен только через специальный класс Dispatcher.
Вместо System.Timers.Timer в моем случае оказалось легче использовать System.Windows.Threading.DispatcherTimer. Он во многом похож на обычный таймер, но главное его отличие в том, что он его обработчик выполняется в том же потоке (в очереди класса Dispatcher) что и форма с UI компонентами:
Если в обработчике таймера будет выполняться "тяжелый" код, который может привести к тому что компоненты формы перестанут откликаться на действия пользователя, то все таки лучше вынести такой код в другой поток используя обычный таймер System.Timers.Timer. А если понадобится доступ к объектам формы, то нужно использовать вызов Invoke:
Вместо System.Timers.Timer в моем случае оказалось легче использовать System.Windows.Threading.DispatcherTimer. Он во многом похож на обычный таймер, но главное его отличие в том, что он его обработчик выполняется в том же потоке (в очереди класса Dispatcher) что и форма с UI компонентами:
System.Windows.Threading.DispatcherTimer t =
new System.Windows.Threading.DispatcherTimer();
t.Interval = new TimeSpan(500);
t.Tick += new EventHandler(t_Tick);
t.Start();
Если в обработчике таймера будет выполняться "тяжелый" код, который может привести к тому что компоненты формы перестанут откликаться на действия пользователя, то все таки лучше вынести такой код в другой поток используя обычный таймер System.Timers.Timer. А если понадобится доступ к объектам формы, то нужно использовать вызов Invoke:
this.Dispatcher.Invoke((Action)delegate { //код для доступа к UI }
WPF: Задание пути к файлу изображения из кода
Начал изучать WPF и тут же сталкиваюсь с проблемой - изображение после добавления не доступно в списке подстановки IntelliSense из статического класса Resources, да и у компонента Image свойство Source имеет тип совсем не Bitmap а ImageSource.
Из xaml разметки устанавливается примерно таким образом:
Из .cs кода(для изображения встроенного в ресурсы приложения):
Либо, вариант покороче:
Вместо "/MemoryWPF;component/", можно написать "./" еще больше укоротив пример.
Uri определяет путь к файлу, если изображения не будут встроены в ресурсы во время компиляции, а будут расположены в локальной папке либо в интернете, то можно используя соответствующий путь подгрузить их оттуда:
Из xaml разметки устанавливается примерно таким образом:
<img source="/MemoryWPF;component/Images/1.jpg" />
Из .cs кода(для изображения встроенного в ресурсы приложения):
Uri src = new Uri(@"/MemoryWPF;component/Images/1.jpg", UriKind.Relative); BitmapImage bImg = new BitmapImage(src); Image img = new Image(); img.Source = bImg;
Либо, вариант покороче:
Image img = new Image(); img.Source = new BitmapImage(new Uri(@"/MemoryWPF;component/Images/1.jpg", UriKind.Relative));
Вместо "/MemoryWPF;component/", можно написать "./" еще больше укоротив пример.
Uri определяет путь к файлу, если изображения не будут встроены в ресурсы во время компиляции, а будут расположены в локальной папке либо в интернете, то можно используя соответствующий путь подгрузить их оттуда:
// путь к файлу интернете new Uri(@"http://s.codeproject.com/App_Themes/Christmas/Img/logo250x135.gif"); // путь к файлу на диске new Uri(@"D:/2.jpg");
суббота, 22 декабря 2012 г.
Хоббит(впечатления)...
Что бы кто не говорил - мне фильм понравился, масса положительных эмоций, встреча с полюбившимися по "Властелину" героями, прекрасные пейзажи, чумовые спец эффекты, интересная история - 3 часа пролетели незаметно. Мне кажется что фильм не оставит равнодушным всех кому нравилась пред. трилогия.
О звуке в аймаксе: в пещере, в сцене с голумом когда он хрипел, отловился я конкретно - повернул голову и начал искать кто хрипит в конце зала))))
пятница, 21 декабря 2012 г.
среда, 19 декабря 2012 г.
Хоббит
Купил сегодня билеты в кинотеатр на фильм "Хоббит: Нежданное путешествие" и только когда распечатал купленные билеты понял, что иду в кинотеатр 21 числа! Так заработался что забыл что 21 конец света))) Ну ничего фильм ведь должен быть хороший, думаю оно того стоит))
Кстати удобная система онлайн бронирования и покупки билетов реализована - купил билеты за 5 минут, минус только в том что нужен принтер для распечатки электронного билета. А еще круче то, что если есть android устройство (ну или вездесущий эпл) то минус в виде необходимости распечатки отпадает, так как можно просто поднести устройство с запущенным приложением кинотеатра, и выбранным билетом - к сканеру.
Подписаться на:
Сообщения (Atom)

