27.04.2013, 07:54 | #121 | ||
От заката до рассвета
Регистрация: 10.06.2009
Адрес: Тюмень
Сообщений: 120
Репутация: 50
|
я заводил pictureBox, в итерациях фигачил статичный Bitmap, для него создавал Graphics, рисовал, потом делал pictureBox.Image = bmp; pictureBox.Size = bmp.Size; насчёт минимума потерь - помни, что всё наэкранное выполняется медленнее, поэтому рисовать напрямую на панели, например - плохо. Добавлено через 2 минуты плюс DrawUnscaledImage() должен, в принципе, выполняться быстрее. Плюс никто не мешает написать свой unsafe метод с копированием, особенно если размеры изображений постоянны.
__________________
— Я пью горячий шоколад только в месяцах, где присутствует буква Р. — Почему? — Ну. Жизнь без капризов — это не жизнь. — Все становится лучше, когда есть Bluetooth. — В этом мире полно бездомных, грязных носков. — В моем мире нет. (с) ТБВ Последний раз редактировалось $finX; 27.04.2013 в 07:56. Причина: Добавлено сообщение |
||
|
28.04.2013, 19:19 | #122 | ||
Вечный Искатель
Регистрация: 07.07.2007
Сообщений: 303
Репутация: 387
|
Анимацию делаешь? Помню в Делфи был совет в этом случае не перерисовывать всё, а лишь измененную область. Если не вариант, то делай что-то типа двойной буферизации - держи в памяти два битмапа, в один записываешь всё, что надо вывести на экран, рисуешь его и параллельно готовишь второй. Но это костыль, потому что не предназначен WinForms для анимации, хоть убей, и в этом нет никакого хардкора.
__________________
Я вижу, чего ты видеть не можешь — Видения, на глазное бельмо что похожи. Лишь повернешься - уйдет наваждение, Шептанием станет их тихое пение. Затем станешь видеть то, чего нет — Тени на месте, где должен быть свет. Незряч, обезумел, будь отныне готов, Век коротать свой в Зале Слепцов. |
||
|
29.04.2013, 06:19 | #123 | ||
Игрок
Регистрация: 14.06.2006
Адрес: Future
Сообщений: 672
Репутация: 159
|
Да у меня нет анимации как таковой.
Цель такая - вывести на экран упрощенную карту мира, которая состоит из 29 регионов. У каждого региона есть свое название и они отделены друг от друга жирными границами. Есть чек бокс для того чтобы карта выводилась без названий или с ними. Так же есть контекстное меню, которое вызывается при клике правой на регион, в нем 8 цветов, при нажатии цвет выбранного региона закрашивается, цвет границы и названия остается тем же. Я решил создать 29 файлов с каждым регионом и вывожу их и работаю через лист. Перечисляю в массиве и вызываю рисование, да 29 раз. Как не извращался обновление экрана постоянно занимает около 2 секунд, может будет подсказка как это все сделать попроще? $finX, Совет принят, но я пытался сделать что-то подобное, хотя чуть по другому, попорбую на досуге со статичным битмапом.
__________________
Understanding is impossible... Η κατανόηση είναι αδύνατο 理解することは不可能である समझना असंभव है Mr. Freeman +1 [url=https://deepbit.net][img]https://deepbit.net/userbar/4f1ea27f06917288bf000000_375ff6ce34.png[/img][/url] |
||
|
06.08.2013, 14:40 | #124 | ||
Lawful Evil
Регистрация: 23.10.2008
Адрес: г. Харьков
Сообщений: 3,039
Репутация: 308
|
Ребят, нужна помощь. Есть задача создать два потока: первый рекурсивно читает все файлы и папки в указанной папке, второй получает информацию о текущем файле/папке и отображает их в виде объекта TreeView. С первым еще более-менее все понятно:
Скрытый текст: Использую две глобальные переменные currentFile и currentFolder, в которые первый поток заносит файл/папку, а второй сразу же ее считывает. Синхронизацию обеспечиваю с помощью двух объектов Код:
static EventWaitHandle ready = new AutoResetEvent(false); static EventWaitHandle go = new AutoResetEvent(false); Так вот, проблема в следующем. Если во втором потоке просто заносить получаемые файлы в TreeView: Код:
treeView1.Invoke(new Action(() => { treeView1.Nodes.Add(currentFile); })); Вопрос: как воспроизвести исходную файловую структуру во втором потоке? Передавать из первого потока целый объект TreeNode нельзя.
__________________
And once again, Probability proves itself willing to sneak into a back alley and service Drama as would a copper-piece harlot. ©
|
||
|
06.08.2013, 16:42 | #125 | ||
От заката до рассвета
Регистрация: 10.06.2009
Адрес: Тюмень
Сообщений: 120
Репутация: 50
|
-PhantomX-, не стал особо вникать, но проблема не ясна. ты добавляешь в treeview всё в корень, естесн, что получается набор файлов. в чём проблема, ты не умеешь работать с древовидной структурой этого компонента или тебе неясно, как сохранять и передавать данные иерархии файлов между потоками?
и ещё вот это. так ты же так и делаешь - твои currentFile и currentFolder и есть объекты TreeNode, и ты их передаёшь (грубо говоря) между потоками. и зачем эта мура с потоками? без них всё было бы гораздо проще. Добавлено через 1 минуту и зачем ты вообще завёл currentFolder, если нигде его не используешь?
__________________
— Я пью горячий шоколад только в месяцах, где присутствует буква Р. — Почему? — Ну. Жизнь без капризов — это не жизнь. — Все становится лучше, когда есть Bluetooth. — В этом мире полно бездомных, грязных носков. — В моем мире нет. (с) ТБВ Последний раз редактировалось $finX; 06.08.2013 в 16:44. Причина: Добавлено сообщение |
||
|
06.08.2013, 17:07 | #126 | ||
Lawful Evil
Регистрация: 23.10.2008
Адрес: г. Харьков
Сообщений: 3,039
Репутация: 308
|
Такое задание, реализовать именно потоками.
Цитата:
Вот-вот. Именно. У меня нет возможности передать файловую структуру в целом, и нужно как-то ее восстановить, имея в наличии только постоянно поступающие файлы. Или может быть можно как-то передать структуру папок и потом набить ее файлами, чтобы в итоге она выглядела точно так же, как и исходная?
__________________
And once again, Probability proves itself willing to sneak into a back alley and service Drama as would a copper-piece harlot. ©
Последний раз редактировалось -PhantomX-; 06.08.2013 в 17:13. |
||
|
06.08.2013, 19:07 | #127 | ||
От заката до рассвета
Регистрация: 10.06.2009
Адрес: Тюмень
Сообщений: 120
Репутация: 50
|
именно. создаёшь свой класс, вот в нём ты делаешь так
Скрытый текст: и ты, на этапе просмотра первым потоком всех элементов текущего каталога, передаёшь в конструктор и текущий каталог, и новый перебираемый файл/папку, а в конструкторе соответственно запоминаешь в Parent родительский каталог. прикол в том, что любое дерево можно представить как множество пар (номер узла, номер родительского узла), и, соответственно, по ним построить то, что тебе нужно. поэтому тебе проще всего просто хранить для каждого файла и папки родительскую папку. реализовывай как хочешь - хоть числовыми идентификаторами, хоть строковыми, хоть ссылками.
__________________
— Я пью горячий шоколад только в месяцах, где присутствует буква Р. — Почему? — Ну. Жизнь без капризов — это не жизнь. — Все становится лучше, когда есть Bluetooth. — В этом мире полно бездомных, грязных носков. — В моем мире нет. (с) ТБВ |
||
|
07.08.2013, 16:18 | #128 | ||
Lawful Evil
Регистрация: 23.10.2008
Адрес: г. Харьков
Сообщений: 3,039
Репутация: 308
|
$finX, извини, если надоедаю, но можно для чайника чуть поподробней?
Допустим, моя рекурсия из первого потока посылает файл и его родительский каталог (он же текущая папка). Второй поток его в бесконечным цикле принимает. При этом файлы из-за рекурсии поступают в порядке, обратном тому, в котором они вложены (т.е., от самого внутреннего к корневой папке). Как мне в таких условиях эти пары сортировать? Уже неделю с этой фигней мучаюсь %(
__________________
And once again, Probability proves itself willing to sneak into a back alley and service Drama as would a copper-piece harlot. ©
|
||
|
08.08.2013, 00:21 | #129 | ||
От заката до рассвета
Регистрация: 10.06.2009
Адрес: Тюмень
Сообщений: 120
Репутация: 50
|
-PhantomX-, ну, роди алгоритм, что ты не как дома.
как мне представляется сейчас - создай класс, в нём реализуй хранилище в виде леса, то есть списка деревьев. в этот класс зафигачь метод добавления пары (файл, корневая папка), в котором будет происходить добавление ещё одного дерева в общий список. дерево, соответственно, из двух элементов. плюс реализовываешь процедуру, которая проверяет все деревья в лесу на то, что корневой элемент дерева содержится в другом дереве из леса, в этом случае ты перекидываешь это дерево в другое, в котором элемент встретился. поясняю на примере. Скрытый текст:
__________________
— Я пью горячий шоколад только в месяцах, где присутствует буква Р. — Почему? — Ну. Жизнь без капризов — это не жизнь. — Все становится лучше, когда есть Bluetooth. — В этом мире полно бездомных, грязных носков. — В моем мире нет. (с) ТБВ |
||
|
05.09.2013, 14:09 | #130 | ||
От заката до рассвета
Регистрация: 10.06.2009
Адрес: Тюмень
Сообщений: 120
Репутация: 50
|
вопрос. WPF.
ввожу триггер, чтобы создать анимацию. сам вопрос простой - каким событием перехватывать нажатие кнопки мыши? <EventTrigger RoutedEvent="UIElement.MouseDown"> - перехватывает нажатие ТОЛЬКО ПРАВОЙ кнопки. <EventTrigger RoutedEvent="UIElement.MouseLeftButtonDown"> - вообще ничего не перехватывает, ни левую, ни правую. нужно именно нажатие и отпускание, а не клик. нужна именно кошерная левая кнопка. гугл мне не внемлет. кто-нибудь сталкивался? Добавлено через 24 минуты так. что-то таки нашлось - по-видимому, единственным вариантом остаётся PreviewMouseDown и проверка e.LeftButton == MouseButtonState.Pressed. вопрос обновляется. вот код: Скрытый текст: каким образом мне в xaml засунуть эту самую проверку? я пишу общий кнопочный стиль, может, там можно сделать через код на шарпе?
__________________
— Я пью горячий шоколад только в месяцах, где присутствует буква Р. — Почему? — Ну. Жизнь без капризов — это не жизнь. — Все становится лучше, когда есть Bluetooth. — В этом мире полно бездомных, грязных носков. — В моем мире нет. (с) ТБВ Последний раз редактировалось $finX; 05.09.2013 в 14:34. Причина: Добавлено сообщение |
||
|
30.10.2013, 19:43 | #131 | ||
Игрок
Регистрация: 14.06.2006
Адрес: Future
Сообщений: 672
Репутация: 159
|
Задам вопрос в этой теме.
Кто имел дело с контактом - есть ли там возможность создавать опросы через апи, и какой наилучший способ сделать это на данном языке. (через апи или без) Жду советов бывалых)
__________________
Understanding is impossible... Η κατανόηση είναι αδύνατο 理解することは不可能である समझना असंभव है Mr. Freeman +1 [url=https://deepbit.net][img]https://deepbit.net/userbar/4f1ea27f06917288bf000000_375ff6ce34.png[/img][/url] |
||
|
31.10.2013, 01:13 | #132 | ||
Игроман
Регистрация: 13.07.2007
Адрес: Сімферополь
Сообщений: 3,012
Репутация: 629
|
Судя по всему, нет. Вот список всех методов для работы с опросами: http://joxi.ru/MoRxUtg5CbDvd_pvZcQ
И как ты собрался делать это без апи? |
||
|
31.10.2013, 06:31 | #133 | ||
Игрок
Регистрация: 14.06.2006
Адрес: Future
Сообщений: 672
Репутация: 159
|
Hast,
Без апи - эмуляция браузера, пост запросы и т.п. Тут в чем дело, если опрос уже существует то добавить его можно, но именно создать новый не получается, и меня это честно говоря приводит в шок, они просто забыли? http://vk.com/dev/wall.post - вот тут сказано, что указав в параметре attachments тип poll, мы отправляем опрос. проблема в том что мы не знаем ид опроса. Сам опрос возможно создать как виджет к сайту здесь - http://vk.com/dev/Poll. Там нажав на кнопочку получить код, внизу можно увидеть ид созданного опроса, и если я вставляю этот ид в wall.post, то он появляется на стене, НО голосовать нельзя - ошибка доступа. Если же на странице создания опросов нажать кнопочку рассказать друзьям, то он также появляется на стене, с тем же ид, и отправляя программно этот ид на любую стену опрос появляется и голосовать можно. Спрашивается, что за хрень тут зарыта?
__________________
Understanding is impossible... Η κατανόηση είναι αδύνατο 理解することは不可能である समझना असंभव है Mr. Freeman +1 [url=https://deepbit.net][img]https://deepbit.net/userbar/4f1ea27f06917288bf000000_375ff6ce34.png[/img][/url] |
||
|
31.10.2013, 16:32 | #134 | ||
Игроман
Регистрация: 13.07.2007
Адрес: Сімферополь
Сообщений: 3,012
Репутация: 629
|
Желаю удачи
Хрень называется vk api. Я два года работал в геймдеве для вконтакта, и ничего хорошего о платформе сказать не могу. Поэтому такие вещи как "не может быть, что они забыли" вплоне реальны. Они только недавно более-менее нормальный референс по апи сделали. И то далеко не полный. |
||
|
06.11.2013, 13:31 | #135 | ||
Игрок
Регистрация: 14.06.2006
Адрес: Future
Сообщений: 672
Репутация: 159
|
Решил ужасно кривым но рабочим способом. Создаю голосовалку заполняя поля из браузер-контрола и програмно нажимаю кнопку отправить. Потом беру запись со стены wall.get там подсматриваю ид опроса, удаляю запись и уже через апи добавляю голосовалку на нужные стены в группах или польователям.
Теперь возникла вторая проблема. Все знают кнопку шаринга в соц сеть. Но что если мне нужно расшарить ссылку с описанием (своим)? у wall.post можно добавить ссылку и она автоматом распарсится в нечто такое Скрытый текст: А нужно чтобы было нечто такое Скрытый текст: Елки палки, или мне кажется что я уже видел как подобное делали в приложениях. Вопрос на миллион - как?
__________________
Understanding is impossible... Η κατανόηση είναι αδύνατο 理解することは不可能である समझना असंभव है Mr. Freeman +1 [url=https://deepbit.net][img]https://deepbit.net/userbar/4f1ea27f06917288bf000000_375ff6ce34.png[/img][/url] |
||
|
18.11.2013, 12:50 | #136 | ||
Lawful Evil
Регистрация: 23.10.2008
Адрес: г. Харьков
Сообщений: 3,039
Репутация: 308
|
Разбирая примеры из Рихтера столкнулся с такой проблемой, что отсутствуют некоторые пространства имен. Например, System.Threading.Tasks. Установлена полная версия Visual Studio Ultimate 2012, .NET Framework версии 4.5.50709. Какие-то дополнительные компоненты нужны, чтоль?
__________________
And once again, Probability proves itself willing to sneak into a back alley and service Drama as would a copper-piece harlot. ©
|
||
|
18.11.2013, 13:58 | #137 | ||
От заката до рассвета
Регистрация: 10.06.2009
Адрес: Тюмень
Сообщений: 120
Репутация: 50
|
-PhantomX-, должен быть в стандартной комплектации дотнета. версия дотнета в настройках проекта выставлена 4.5?
__________________
— Я пью горячий шоколад только в месяцах, где присутствует буква Р. — Почему? — Ну. Жизнь без капризов — это не жизнь. — Все становится лучше, когда есть Bluetooth. — В этом мире полно бездомных, грязных носков. — В моем мире нет. (с) ТБВ |
||
|
18.11.2013, 15:41 | #138 | ||
Lawful Evil
Регистрация: 23.10.2008
Адрес: г. Харьков
Сообщений: 3,039
Репутация: 308
|
Да, действительно в настройках версия не та. Спасибо. Почему-то думал, что при конвертации проекта изменится и требуемая версия.
__________________
And once again, Probability proves itself willing to sneak into a back alley and service Drama as would a copper-piece harlot. ©
|
||
|
25.01.2014, 17:51 | #139 | ||
Игрок
Регистрация: 14.06.2006
Адрес: Future
Сообщений: 672
Репутация: 159
|
Подскажите народ какое решение подойдет для того чтобы автоматом загружать от 10 до 80 страниц из интернета и парсить их каждые 10 секунд, и при удобном случае вызывать яваскрипт функцию с сайта и парсить то что она открыла?
ТО что сейчас работает удовлетворительно.. на каждую загрузку поток с локером браузер-контрола, но судя по скорости это очень медленно.
__________________
Understanding is impossible... Η κατανόηση είναι αδύνατο 理解することは不可能である समझना असंभव है Mr. Freeman +1 [url=https://deepbit.net][img]https://deepbit.net/userbar/4f1ea27f06917288bf000000_375ff6ce34.png[/img][/url] |
||
|
25.01.2014, 23:14 | #140 | ||
Большой, красивый, СИНИЙ
Регистрация: 31.12.2021
Сообщений: 11,414
Репутация: 3133
|
Pharaon, разве что WebKit, но он нативный. Других способов эмулировать работу браузера нет.
|
||
|
Метки |
c#, обсуждение, помощь, программирование |
|
|
|